你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS編程技術 >> 使用swift檢測系統版本

使用swift檢測系統版本

編輯:IOS編程技術
How to check the system of version in swift

NSProcessInfo

預料到開發者對檢查系統版本同時又對Swift友好的API的需求,iOS 8在NSProcessInfo中引入了operatingSystemVersion屬性和 isOperatingSystemAtLeastVersion方法。兩個API都使用了新的NSOperatingSystemVersion數值類 型,它包括majorVersion、minorVersion和patchVersion。

Tips:蘋果軟件發布的版本號遵循語義化版本約定。

isOperatingSystemAtLeastVersion

對一個簡單的檢查,比如“這個app能在iOS 8運行嗎?” isOperatingSystemAtLeastVersion是最簡單明了的方式。

 if NSProcessInfo().isOperatingSystemAtLeastVersion(NSOperatingSystemVersion(majorVersion: 8, minorVersion: 0, patchVersion: 0)) {
 print("iOS >= 8.0.0")
 }

operatingSystemVersion

為了更復雜的版本比較,operatingSystemVersion能夠被直接檢查。將它和Swift模式比較和switch語句組合,可以使得代碼更簡潔。

 let os = NSProcessInfo().operatingSystemVersion
 switch (os.majorVersion, os.minorVersion, os.patchVersion) {
 case (8, _, _):
     print("iOS >= 8.0.0")
 case (7, 0, _):
     print("iOS >= 7.0.0, < 7.1.0")
 case (7, _, _):
     print("iOS >= 7.1.0, < 8.0.0")
 default:
     print("iOS < 7.0.0")
 }

UIDevice systemVersion

可惜的是,新NSProcessInfo API目前並不是特別有用,因為它們在iOS 7上不生效。

作為替代,可以使用systemVersion屬性UIDevice來進行檢查:

 if UIDevice.currentDevice().systemVersion == "8.0.0"{
    print("ios = 8.0.0")
 }

NSAppKitVersionNumber

另一個確定API可用性的方法是檢查框架的版本號。不幸的是,Foundation的NSFoundationVersionNumber和Core Foundation的kCFCoreFoundationVersionNumber很早之前就過時了,但過去幾個版本的OS發布並沒有更新這兩個常量。

這對於iOS來說是無解的,但OS X還可以通過NSAppKitVersionNumber檢查AppKit的版本號:

 if rint(NSAppKitVersionNumber) > NSAppKitVersionNumber10_9 {
     print("OS X >= 10.10")
 }

Tips:蘋果在示例代碼中使用rint來完成NSAppKitVersionNumber的版本號比較。

將以上的總結一下,在Swift中檢查系統版本總共有以下方法。

  • 使用#if os(iOS)預編譯指令來區別iOS(UIKit)和OS X(AppKit)目標。
  • 當最低目標適配為iOS 8以上時,使用NSProcessInfo operatingSystemVersion 或isOperatingSystemAtLeastVersion。
  • 如需適配iOS 7或以下的設備,使用UIDevice systemVersion上的compare和 NSStringCompareOptions.NumericSearch。
  • 如果是為OS X開發,使用NSAppKitVersionNumber比較生效的AppKit常量。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved