ios - 如何在 watchOS 3 上进行快速可用性检查

标签 ios swift watchos-2 watchos watchos-3

我在使用 watchOS 3watchOS 2 时遇到了一个有趣的问题。在我的 ComplicationController 中,我想同时支持 watchOS 3watchOS 2。创建复杂功能模板时,我会检查用户是否正在运行 watchOS 3。如果他是,我将允许使用 .ExtraLarge 复杂功能,否则此选项不可用。

我正在使用 #available 语法,但由于缺少框架,该应用甚至无法在 watchOS 2 上启动。这是我的代码:

if #available(watchOSApplicationExtension 3.0, *) {
   if complicationFamily == .ExtraLarge {
      let extraLarge = CLKComplicationTemplateExtraLargeSimpleText()
      extraLarge.textProvider = simpleTextProvider

      return extraLarge
   } else {
      return nil
   }
} else {
   return nil
}

当我在 watchOS 2 上运行时,这是我得到的错误:

dyld: Symbol not found: _OBJC_CLASS_$_CLKComplicationTemplateExtraLargeSimpleText
  Referenced from: /Users/asdf/Library/Developer/CoreSimulator/Devices/48D00565-3BA5-4851-B249-5818BA060716/data/Containers/Bundle/Application/1ACF1C41-9D9E-4AB6-9D49-767A067AE968/WatchKit App.app/PlugIns/WatchKit Extension.appex/WatchKit Extension
  Expected in: /Library/Developer/CoreSimulator/Profiles/Runtimes/watchOS 2.2.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ClockKit.framework/ClockKit

有没有其他人在部署到 watchOS 3watchOS 2 时遇到问题?

最佳答案

我在 Apple 开发者论坛上的一篇帖子的帮助下弄明白了。我需要将 ClockKit.framework 添加到链接的二进制文件并将其状态设置为 Optional。现在,在 watchOS 2 上一切正常。

这是帖子: https://forums.developer.apple.com/thread/61712

关于ios - 如何在 watchOS 3 上进行快速可用性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39472950/

相关文章:

iphone - 核心数据错误是指自反多对多关系的核心数据属性不存在

ios - 如何检查我是否可以访问使用 NSFileProtectionKey = NSFileProtectionCompleteUntilFirstUserAuthentication 保存的文件

ios - Swift - TableView 加载错误 - 可怕的 SIGBART

swift - WKInterfaceLabel.setText 不反射(reflect)模式 viewController 关闭后的更改

swift - 将对象添加到字典(而不是字典只保留最近的对象)Swift

ios - 如何获取Xcode构建目录?

ios - 使用 shouldChangeCharactersInRange 函数时如何使特定文本字段不可编辑

arrays - 加载数组中的数据

regex - Swift 2 正则表达式意外行为

ios - 在 Watch OS 2 中加载 Glance 不一致