xcode - 如何使用 Xcode 7 和 8 编译针对最新 SDK 的 Swift 代码?

标签 xcode swift foundation

NSURL API 上某些方法的可空性在 iOS 9 和 10 之间发生了变化。

例如,iOS 10 returns an optional对于 URLByAppendingPathComponent 函数,但是 iOS 9 does not .使用 #available 不会起作用,因为它不是编译时检查。

    let appSupportURL = try! NSFileManager.defaultManager().URLForDirectory(.ApplicationSupportDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true)
    let folder: NSURL
    if #available(iOS 10.0, *) {
        folder = appSupportURL.URLByAppendingPathComponent("Folder", isDirectory: true)!
    } else {
        folder = appSupportURL.URLByAppendingPathComponent("Folder", isDirectory: true)
    }

如何使用 Xcode 7 或 Xcode 8 在我的应用中构建 Swift 代码,同时仍以最新的 iOS SDK 为目标?

最佳答案

在 WWDC 2016 上,Ewa Matejska presented the following technique :

#if swift(>=2.3)
// code that builds against iOS 10 SDK.
#else
// code that builds against iOS 9 SDK.
#endif

这个技巧也是documented on the Swift blog .

关于xcode - 如何使用 Xcode 7 和 8 编译针对最新 SDK 的 Swift 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37957487/

相关文章:

swift - 无法在 Swift 中从 XCTest 打开 NSStream

objective-c - 如何观察来自不同应用程序的通知?

iphone - 如何在 Xcode 中的注释上设置默认名称和公司名称?

xcode - macOS 应用公证在上传期间卡住

ios - 如何从 iOS Swift 3 的键盘上删除更改语言键按钮

ios - WKWebView,获取所有cookie

swift - 从代码中获取Xcode项目目录

ios - 我的主要场景中所有 IBOutlets 都是零

ios - UIColor patternImage 与 UIActivityViewController barTintColor 冲突

ios - 如何使用 Alamofire.request() 将 XML soap 响应保存到文件?