如何在 watchOS 3 上进行 swift 可用性检查
How to do swift availability checking on watchOS 3
我在使用 watchOS 3
和 watchOS 2
时遇到了一个有趣的问题。在我的 ComplicationController
中,我想同时支持 watchOS 3
和 watchOS 2.
在创建并发症模板时,我正在检查用户是否 运行ning 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 开发者论坛上 post 的帮助下弄明白了。我需要将 ClockKit.framework
添加到链接的二进制文件并将其状态设置为 Optional
。现在在 watchOS 2
.
上一切正常
我在使用 watchOS 3
和 watchOS 2
时遇到了一个有趣的问题。在我的 ComplicationController
中,我想同时支持 watchOS 3
和 watchOS 2.
在创建并发症模板时,我正在检查用户是否 运行ning 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 开发者论坛上 post 的帮助下弄明白了。我需要将 ClockKit.framework
添加到链接的二进制文件并将其状态设置为 Optional
。现在在 watchOS 2
.