Swift 2 API可用性检查故事板

jps*_*asi 5 swift ios9 swift2

我有一个现有的iOS应用程序,它支持iOS 8.我想为iOS 9添加新功能.

我为iOS 9创建了一个新的故事板,它使用了UIStackView等iOS 9功能.基于Device OS版本实例化适当的故事板文件.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    let storyboard: UIStoryboard
    if #available(iOS 9, *, *) {
        storyboard = UIStoryboard(name: "Main", bundle: nil)
    } else {
        storyboard = UIStoryboard(name: "MainOld", bundle: nil)
    }
    let mainViewController = storyboard.instantiateInitialViewController()
    window?.rootViewController = mainViewController
    window?.makeKeyAndVisible()
    return true
}
Run Code Online (Sandbox Code Playgroud)

但我在Main.storyboard"iOS 9.0之前的UIStackView"上遇到编译错误

我正在使用Xcode 7 beta 5.

如何使用Swift 2 #availability检查在iOS 8支持的项目中使用iOS 9相关功能

jps*_*asi 3

我在 Apple Cocoa 开发者电子邮件列表中收到了 Quincey Morris 的回复。

默认情况下, 故事板文件的文件检查器中设置的构建是“部署目标”,即 iOS 8,因此编译器会抛出错误。

如果我在使用 iOS 9 功能的故事板上将“Build for”设置更改为 iOS 9。没有错误,应用程序在 iOS 8 和 iOS 9 中运行。