[英]How can I determine the latest iOS version programmatically using Swift?
[英]How can I programmatically find Swift's version?
我知道我可以找到我現在正在運行的 Swift 版本,恢復到終端並輸入:
xcrun swift --version
Swift version 1.1 (swift-600.0.57.4)
Target: x86_64-apple-darwin13.4.0
另外,我一直在閱讀 Swift 中的預處理器宏,但沒有找到 Swift 版本常量。
隨着 Swift 1.2 的臨近,最好標記僅在 Swift 1.1(Xcode 最高 6.2)上運行的舊代碼或需要 Xcode 6.3(Swift 1.2)的新代碼
注意:我還可以使用 system() 來執行以下操作:
system("xcrun swift --version | grep version > somefile.txt")
然后打開somefile.txt,而是更喜歡一些更簡單的解決方案
您可以使用條件編譯指令來測試用於構建項目的特定 Swift 版本:
#if swift(>=5.0)
print("Hello, Swift 5!")
#elseif swift(>=4.0)
print("Hello, Swift 4!")
#elseif swift(>=3.0)
print("Hello, Swift 3!")
#elseif swift(>=2.2)
print("Hello, Swift 2.2!")
#elseif swift(>=2.1)
print("Hello, Swift 2.1!")
#endif
終於有一個解決方法來做到這一點。 我正在使用前綴為__
的常量,您可以在 Playground 中觀察到。 通過某種程度的反射,這會更容易,但是......
__IPHONE_OS_VERSION_MAX_ALLOWED
是80200,這意味着__IPHONE_8_2
為6.2的Xcode(SWIFT 1.1),但它的值是80300( __IPHONE_8_3
)在Xcode 6.3(SWIFT 1.2)
func isSwift12() -> Bool {
return __IPHONE_OS_VERSION_MAX_ALLOWED == 80300
}
isSwift12()
因此,現在在您的庫中,您可以快速失敗並使用以下命令告訴您的用戶 Swift 的版本不正確:
assert(isSwift12(), "Need Swift 12")
斯威夫特會給你一個很好的:
斷言失敗:需要 Swift 12: file ,第 20 行
更新 WWDC 2015 - Swift 2.0
正如 Apple 的Swift 博客中所述,在 Swift 2.0 中,我們有#available
塊來檢查代碼中的某些操作系統版本。 一個例子應該是:
if #available(OSX 10.11, *) {
monochromeFilter!.setValue(CIColor(red: 0.5, green: 0.5, blue: 0.5), forKey:kCIInputColorKey)
} else {
// Fallback on earlier versions
}
Swift 3.1擴展了@available
屬性以支持在其現有平台版本之外指定 Swift 版本號。
// Swift 3.1
@available(swift 3.1)
func intVersion(number: Double) -> Int? {
return Int(exactly: number)
}
@available(swift, introduced: 3.0, obsoleted: 3.1)
func intVersion(number: Double) -> Int {
return Int(number)
}
從你的評論:
我想檢查一下,因為不同版本的 Swift 有不同的功能
您不應該為了使用某些功能而檢查您的編程語言的版本。 這種方法要好得多:
if (self.respondsToSelector(Selector("yourMethodSelector"))) {
self.yourMethodSelector(test, sender: self)
} else {
//error handling
}
只需檢查方法是否可用。
在 Mac 計算機上打開命令行
輸入 swift -version,沒有雙破折號,這對 Xcode 11/Swift 5.2.2 不再適用
當然,您必須更新到最新的 IDE,它始終會下載最新版本的 Xcode、語言、編譯器和工具......一切都已更新。 如果您這樣做,該解決方案肯定有效。
對於 iOS :
var systemVersion = UIDevice.currentDevice().systemVersion;
對於 OSX :
var systemVersion = NSProcessInfo.processInfo().operatingSystemVersion;
K。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.