【问题标题】:swift 2.0 @available doesn't workswift 2.0 @available 不起作用
【发布时间】:2015-10-05 12:29:14
【问题描述】:

我正在尝试在 iOS7 上运行此代码,但它失败了

@available(iOS 9.0, *)
class WatchConnection: NSObject, WCSessionDelegate {

    class func sharedInstance() -> WatchConnection {
        struct WatchConnectionSingleton {
            static let instance = WatchConnection()
        }
        return WatchConnectionSingleton.instance
    }

    override init() {
        super.init()
        if (WCSession.isSupported()) {
            let session = WCSession.defaultSession()
            session.delegate = self
            session.activateSession()
        }
    }

但是这行得通

import WatchKit
import WatchConnectivity

class WatchConnection: NSObject, WCSessionDelegate {

    class func sharedInstance() -> WatchConnection {
        struct WatchConnectionSingleton {
            static let instance = WatchConnection()
        }
        return WatchConnectionSingleton.instance
    }

    override init() {
        super.init()
        guard #available(iOS 9.0, *) else { return }

        if (WCSession.isSupported()) {
            let session = WCSession.defaultSession()
            session.delegate = self
            session.activateSession()
        }
    }

    // use with invalidated session
    @available(iOS 9.0, *)
    func getUserId(completion: ((String?) -> Void)?) {

【问题讨论】:

  • 你是在 iOS9 还是 iOS7 上运行?
  • 在 iOS7 中。在 iOS9 中工作正常。
  • 你能发布一些错误输出吗? IIRC,@available 标签在 iOS 8 下不可用
  • 我已经更新了问题

标签: ios xcode swift swift2 ios9


【解决方案1】:

你不能在 iOS 7 中使用@available

您可以使用以下方法检查版本:

if ([[[UIDevice currentDevice] systemVersion] doubleValue] < 8.0) {
    //For iOS 7 or less
}
else{
    //Check for available 
}

查看documents

还可以在这里查看article 中的描述。

Swift 2.1 Documents 有类似#available 的语法。请检查预发布documents


关于守卫语句条件:

如果一个或多个条件不满足,则使用保护语句将程序控制转移到范围之外。

【讨论】:

  • 你确定吗?你能发布一个指向苹果文档的链接吗?
  • @Arsen 用文档更新了答案。
  • 谢谢。但是guard #available(iOS 9.0, *) else { return } 看起来像是在开发 ios7
  • 属性是语言规范的一部分,因此它应该适用于支持该语言的每个操作系统。标准库与应用程序链接,所以没有理由,为什么不使用可用于在 iOS7 上运行的应用程序。对我来说它看起来像一个错误......(如果您的部署目标设置为 iOS7)
猜你喜欢
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多