Mar*_*c_V 16 objective-c ios ios8-today-widget today-extension
我一直在制作今天的扩展程序,从Feed中下载文章并显示最新的文章.整个过程在iOS 8上运行良好,仍在iOS 8.1上运行,然后是iOS 8.1.2,我们开始抱怨今天的扩展程序不再起作用了.我尝试在iOS 8.1.2设备上进行调试,在扩展甚至启动之前,它崩溃了这个错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: <__NSConcreteUUID 0x174027280> 5AFB07AB-5DCD-46FE-8D07-44DE0F3789F2)'
Run Code Online (Sandbox Code Playgroud)
我已经阅读了这篇关于开发今天扩展时发生的频繁错误的帖子:http://www.atomicbird.com/blog/ios-app-extension-tip
Tom Harrington在帖子中说:
在iOS 8(以及其他最新版本)中,在Xcode的构建设置中启用模块意味着您无需明确列出要使用的所有框架.他们会自动找到.
但是今天扩展使用的NotificationCenter.framework不是这种情况.如果从构建设置中删除它,则不会收到任何构建警告或错误.但是当您尝试加载扩展时,您将从libextension.dylib中获得异常,并且您的扩展名将无法加载.异常消息没有启发性:
2014-08-16 12:06:53.793 TodayTestExtension [41313:6111763] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'* setObjectForKey:object不能为nil(key:<__ NSConcreteUUID 0x7fd729422390> ED3B42F8-66CD-4CB0- BCD5-F3DBA6F34DB5)'如果您正在进行今天的扩展,只需将该框架保留在构建设置中即可.它不应该在那里,但确实如此.
我的扩展程序在其构建设置中包含NotificationCenter.framework,但我怀疑我的问题可能在某种程度上类似.
有人遇到过类似的问题吗?知道怎么解决吗?
WMD*_*WMD 44
如果在"Info.plist"中使用NSExtensionPrincipalClass以便定义具有不存在的ViewController名称的基类(而不是使用故事板),也会发生此错误.
使用Swift时,请确保在类前面加上模块名称(通常是目标名称),如"Module.MyViewController".
最终,我尝试从目标中删除NotificationCenter.framework并将其放回去,清理项目,现在它又可以工作了。我想框架毕竟没有正确链接,尽管我可以使用 xcode 在我的目标上看到它。另外,我不明白为什么它确实有效,然后随着 8.1.2 的到来而停止工作。
| 归档时间: |
|
| 查看次数: |
2291 次 |
| 最近记录: |