在Swift中检测可用的API iOS和watchOS
发布时间:2020-12-14 05:59:03 所属栏目:百科 来源:网络整理
导读:#available似乎不工作时区分watchOS和iOS。 这里是一个代码在iOS watchOS: lazy var session: WCSession = { let session = WCSession.defaultSession() session.delegate = self return session}() … … if #available(iOS 9.0,*) { guard session.paired
#available似乎不工作时区分watchOS和iOS。
这里是一个代码在iOS& watchOS: lazy var session: WCSession = { let session = WCSession.defaultSession() session.delegate = self return session }() … … if #available(iOS 9.0,*) { guard session.paired else { throw WatchBridgeError.NotPaired } // paired is not available guard session.watchAppInstalled else { throw WatchBridgeError.NoWatchApp } // watchAppInstalled is not available } guard session.reachable else { throw WatchBridgeError.NoConnection } 看来它只是默认为WatchOS和编译器不考虑#available。 我是滥用这个API,还是有其他方法来区分iOS和WatchOS之间的代码? 更新:似乎我是滥用API,如BPCorp所述 使用Tali的解决方案上面的代码工程: #if os(iOS) guard session.paired else { throw WatchBridgeError.NotPaired } guard session.watchAppInstalled else { throw WatchBridgeError.NoWatchApp } #endif guard session.reachable else { throw WatchBridgeError.NoConnection } 不幸的是没有#if os(watchOS).. as of Xcode 7 GM 编辑:不知道什么时候添加,但你现在可以做#if os(watchOS)在Xcode 7.2
如果您只想在iOS上执行该代码,请使用#if os(iOS),而不是if #available(iOS …)。
这样,您不是对操作系统的版本使用动态检查,而是为一个操作系统或另一个操作系统编译不同的代码。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |