我一直在制作一个今日扩展,可以从提要中下载文章并显示最新的文章。
整个事情在 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 http://www.atomicbird.com/blog/ios-app-extension-tip
汤姆·哈林顿在他的帖子中说:
在 iOS 8(和其他最新版本)中,在 Xcode 的构建设置中启用模块意味着您无需显式列出要使用的所有框架。他们会被自动找到。
但 Today 扩展使用的NotificationCenter.framework 的情况并非如此。如果您从构建设置中删除它,您将不会收到任何构建警告或错误。但是,当您尝试加载扩展时,您会从 libextension.dylib 收到异常,并且您的扩展将无法加载。异常消息没有启发:
2014-08-16 12:06:53.793 TodayTestExtension[41313:6111763]* 终止
应用程序由于未捕获的异常“NSInvalidArgumentException”,原因:“*setObjectForKey:对象不能为零(键:<__nsconcreteuuid> ED3B42F8-66CD-4CB0-BCD5-F3DBA6F34DB5)'
如果您正在进行今日扩展,只需将该框架保留在构建设置中即可。它不应该存在,但它确实存在。
我的扩展确实在其构建设置中包含了NotificationCenter.framework,但我怀疑我的问题可能在某种程度上相似。
有人遇到过类似的问题吗?知道如何解决吗?
如果您在“Info.plist”中使用 NSExtensionPrincipalClass 来定义具有不存在的 ViewController 名称的基类(而不是使用故事板),也会发生此错误。
使用 Swift 时,请确保在类前面加上模块名称(通常是目标的名称),例如“Module.MyViewController”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)