【问题标题】:How to do swift availability checking on watchOS 3如何在 watchOS 3 上进行快速可用性检查
【发布时间】:2016-09-13 14:49:20
【问题描述】:

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 时遇到问题?

【问题讨论】:

    标签: ios swift watchos-2 watchos watchos-3


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2020-09-28
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      相关资源
      最近更新 更多