我一直在制作今天的扩展程序,从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,但我怀疑我的问题可能在某种程度上类似.
有人遇到过类似的问题吗?知道怎么解决吗?