iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【Swift】アプリのバージョンを比較する

個人で開発中のアプリで、バージョンに応じて強制アップデートをかける際に、現在のバージョンと必須バージョンの比較をすることがあったのでその方法をメモしておきます✍️

結論

必須のバージョン(requiredVersion)と現在のバージョン(currentVersion)を比較した時に、必須バージョンの方が大きかった場合にハンドリングを行えるようにするサンプルが下記になります。

let requiredVersion = "1.2.0"
let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as! String // 1.0.0

if requiredVersion.compare(currentVersion) == .orderedDescending {
    // 強制アップデート
}

まず Bundle.main.infoDictionary?["CFBundleShortVersionString"] でアプリのバージョンを取得しています。CFBundleShortVersionString は、Bundle Configuration のキーの一つで、アプリのバージョンをバンドルから取得することができます。Bundle Configuration については以前の記事でもちょろっと触れた気がします?が、下記にドキュメントを載せておきます。

developer.apple.com

次に requiredVersion.compare(currentVersion) == .orderedDescending についてですが、compare(_:)NSStringインスタンスメソッドで、メソッド名の通り二つの String 値を比較します。このメソッドの戻り値である ComparisonResult には、下記の三つのケースがあり今回の場合は .orderedDescending を使用することで、左のオペランドが右のオペランドよりも大きい場合に処理を行えるようにしています。

詳しくは下記のドキュメントを参照してみてください。

developer.apple.com

という感じで今日も以上になります。それではまた明日🧑‍🔧

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com