这里是一个代码在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 …)。这样,您不是对 *** 作系统的版本使用动态检查,而是为一个 *** 作系统或另一个 *** 作系统编译不同的代码。
总结以上是内存溢出为你收集整理的在Swift中检测可用的API iOS和watchOS全部内容,希望文章能够帮你解决在Swift中检测可用的API iOS和watchOS所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)