我在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时遇到问题
发布于 2016-10-06 22:10:05
我在苹果开发者论坛上的一篇文章中找到了答案。我需要将ClockKit.framework添加到链接的二进制文件中,并将其状态设置为Optional。现在一切都在watchOS 2上按预期运行了。
https://stackoverflow.com/questions/39472950
复制相似问题