見出し画像

Swift OS条件文は#availableだけじゃなかった。特定OS条件だけもできるoperatingSystemVersion

こんにちは、りーさんです。

今までOS条件で処理したい時に#availableを使って、OS15以上はこの処理、それ以下は、この処理みたいな感じでやっていました。
#availableだと、OS以下でしたいときにelseにしか処理が書けないといったデメリットがあると思っていて、そうするとOS以上には処理が特にないのに
#available iOS 15 elseといった形で書く必要があったかと思います。

ここで、発見したのがoperatingSystemVersionです。
使い方を説明したいと思います。


前提

現状の保証端末がOS15/16/17でOS15のみでバグが発生したので処理がしたい

#availableの場合

if #available(iOS 16, *) {
    // iOS 16以上の処理
} else {
    // iOS 15以下の処理
}

この書き方だと、以下が1文で書けないので使う際には、時と場合によります。

operatingSystemVersionの場合

import Foundation

let osVersion = ProcessInfo.processInfo.operatingSystemVersion
print("iOS version: \(osVersion.majorVersion).\(osVersion.minorVersion).\(osVersion.patchVersion)")

ログ
17.5.1

ProcessInfoを使うことでより詳細のバージョンを取得することができます。
メジャーバージョン; osVersion.majorVersion
マイナーバージョン: osVersion.minorVersion
パッチバージョン: osVersion.patchVersion

実際の条件使用例

import Foundation

// 細かくOS条件を設定できる
let osVersion = ProcessInfo.processInfo.operatingSystemVersion.majorVersion
let targetVersion = 15

if osVersion == targetVersion {
   // iOS 15の処理 
}

この条件文でメジャーバージョンだけで特定のOSの処理をしたり
メジャーマイナーパッチバージョンを含めた細かい条件を組めたりします。

以上で、OS条件文の紹介でした!
これで、細かく指定して処理できますね(^^)

この記事が気に入ったらサポートをしてみませんか?