Die*_*che 40 macos ios swift xcode6
我知道我可以找到我正在运行的Swift版本,现在恢复到终端并键入:
xcrun swift --version
Swift version 1.1 (swift-600.0.57.4)
Target: x86_64-apple-darwin13.4.0
Run Code Online (Sandbox Code Playgroud)
另外,我一直在阅读关于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")
Run Code Online (Sandbox Code Playgroud)
然后打开somefile.txt,但更喜欢一些更简单的解决方案
cri*_*hoj 33
您可以使用条件编译指令来测试用于构建项目的特定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
Run Code Online (Sandbox Code Playgroud)
Die*_*che 15
最后有一个解决方法来做到这一点.我使用前缀的常量__可以在你的游乐场观察.通过某种程度的反思,这会更容易,但......
__IPHONE_OS_VERSION_MAX_ALLOWED是80200,意思__IPHONE_8_2是Xcode 6.2(Swift 1.1),但__IPHONE_8_3在Xcode 6.3(Swift 1.2)中它的值是80300()
func isSwift12() -> Bool {
return __IPHONE_OS_VERSION_MAX_ALLOWED == 80300
}
isSwift12()
Run Code Online (Sandbox Code Playgroud)
所以现在在您的库中,您可以快速失败并告诉您的用户Swift的版本不正确使用此:
assert(isSwift12(), "Need Swift 12")
Run Code Online (Sandbox Code Playgroud)
斯威夫特会给你一个很好的:
断言失败:需要Swift 12:文件,第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
}
Run Code Online (Sandbox Code Playgroud)
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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13861 次 |
| 最近记录: |