ios – 如何对watchOS 3进行快速可用性检查

我在使用watchOS 3和watchOS 2时遇到了一个有趣的问题.在我的ComplicationController中,我想支持watchOS 3和watchOS 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 3和watchOS 2?

最佳答案 我在Apple开发者论坛的帖子的帮助下弄明白了.我需要将ClockKit.framework添加到链接的二进制文件并将其状态设置为Optional.现在一切都在watchOS 2上按预期工作.

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

点赞