在Swift中检测可用的API iOS和watchOS

在Swift中检测可用的API iOS和watchOS,第1张

概述#available似乎不工作时区分watchOS和iOS。 这里是一个代码在iOS& watchOS: lazy var session: WCSession = { let session = WCSession.defaultSession() session.delegate = self return session}() … … if #available(i #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 …)。

这样,您不是对 *** 作系统的版本使用动态检查,而是为一个 *** 作系统或另一个 *** 作系统编译不同的代码。

总结

以上是内存溢出为你收集整理的在Swift中检测可用的API iOS和watchOS全部内容,希望文章能够帮你解决在Swift中检测可用的API iOS和watchOS所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1055957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存