我一直在做一个今天的扩展,从提要中下载文章并显示最新的文章。整个事情在 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)'
我已经阅读了这篇关于开发今日扩展时经常发生的错误的帖子:http: //www.atomicbird.com/blog/ios-app-extension-tip
汤姆哈灵顿在他的帖子中说:
在 iOS 8(和其他最新版本)中,在 Xcode 的构建设置中启用模块意味着您无需显式列出要使用的所有框架。它们会被自动找到。
但今天扩展使用的 NotificationCenter.framework 并非如此。如果您从构建设置中删除它,您将不会收到任何构建警告或错误。但是当你尝试加载扩展时,你会从 libextension.dylib 中得到一个异常并且你的扩展不会加载。异常消息没有启发性:
2014-08-16 12:06:53.793 TodayTestExtension[41313:6111763] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* setObjectForKey:对象不能为零(键:<__NSConcreteUUID 0x7fd729422390> ED3B42F8-66CD-4CB0- BCD5-F3DBA6F34DB5)' 如果您正在进行今天的扩展,只需将该框架留在构建设置中。它不应该在那里,但它确实存在。
我的扩展在其构建设置中确实包含 NotificationCenter.framework,但我怀疑我的问题在某些方面可能相似。
有人遇到过类似的问题吗?知道如何解决吗?