1. ホーム
  2. アイオス

[解決済み】SwiftでOSのバージョンを確認する?

2022-04-17 09:49:52

質問

Swiftでシステム情報を確認しようとしています。私はそれがコードによって達成される可能性があることを、考え出した。

var sysData:CMutablePointer<utsname> = nil
let retVal:CInt = uname(sysData)

このコードには2つの問題があります。

  1. sysDataの初期値はどうすればいいのか?この例では、おそらく sysData が nil であるため retVal に -1 を与えています。
  2. sysDataから情報を読み取るにはどうしたらよいですか?

どのように解決するのですか?

iOSの場合、お試しください。

var systemVersion = UIDevice.current.systemVersion

OS Xの場合、試してみてください。

var systemVersion = NSProcessInfo.processInfo().operatingSystemVersion

もし、ユーザーが特定のバージョン以上を実行しているかどうかを確認したいだけなら、iOSとOS Xで動作する以下のSwift 2の機能を使用することもできます。

if #available(iOS 9.0, *) {
    // use the feature only available in iOS 9
    // for ex. UIStackView
} else {
    // or use some work around
}

しかし、OSのバージョンを確認することはお勧めしません。バージョン番号を比較するよりも、使いたい機能がその端末で使えるかどうかを確認したほうがよいでしょう。 iOSの場合、前述の通り、セレクタに反応するかどうかを確認する必要があります。 例えば

if (self.respondsToSelector(Selector("showViewController"))) {
    self.showViewController(vc, sender: self)
} else {
    // some work around
}