個人で開発中のアプリで、バージョンに応じて強制アップデートをかける際に、現在のバージョンと必須バージョンの比較をすることがあったのでその方法をメモしておきます✍️
結論
必須のバージョン(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
については以前の記事でもちょろっと触れた気がします?が、下記にドキュメントを載せておきます。
次に requiredVersion.compare(currentVersion) == .orderedDescending
についてですが、compare(_:)
は NSString
のインスタンスメソッドで、メソッド名の通り二つの String
値を比較します。このメソッドの戻り値である ComparisonResult
には、下記の三つのケースがあり今回の場合は .orderedDescending
を使用することで、左のオペランドが右のオペランドよりも大きい場合に処理を行えるようにしています。
詳しくは下記のドキュメントを参照してみてください。
という感じで今日も以上になります。それではまた明日🧑🔧