在iOS 8.1.2上启动之前,今日扩展崩溃

我一直在做一个今天的扩展,从饲料下载文章,并显示最新的。 整个事情在iOS 8上工作得很好,仍然在iOS 8.1上工作,然后到了iOS 8.1.2,我们开始抱怨今天的扩展不能工作了。 我尝试在iOS 8.1.2设备上进行debugging,并在扩展甚至启动之前,崩溃,并出现此错误:

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

Tom Harrington在他的文章中说:

在iOS 8(和其他最新版本)中,在Xcode的构build设置中启用模块意味着你不需要明确地列出你想要使用的所有框架。 他们会被自动find。

但NotificationsCenter.framework并不是这种情况,即Today extensions使用的情况。 如果从构build设置中删除,则不会收到任何生成警告或错误。 但是,当你尝试加载扩展名时,你会从libextension.dylib中得到一个exception,你的扩展将不会被加载。 exception的消息是没有启发性的:

2014-08-16 12:06:53.793 TodayTestExtension [41313:6111763] *因未捕获exception'NSInvalidArgumentException'而终止应用程序,理由:'* setObjectForKey:object不能为零(键:<__ NSConcreteUUID 0x7fd729422390> ED3B42F8-66CD-4CB0- BCD5-F3DBA​​6F34DB5)'如果你正在做一个今天的扩展,就把这个框架留在构build设置中。 它不应该在那里,但它确实。

我的扩展在其构build设置中包含了NotificationCenter.framework,但是我怀疑我的问题在某种程度上可能是相似的。

任何人都面临类似的问题? 任何想法如何解决它?

如果您在“Info.plist”中使用NSExtensionPrincipalClass来定义基类(而不是使用故事板)与不存在的ViewController的名称,也会发生此错误。

当使用Swift时,请确保在类的前面添加模块名称(通常是目标名称),如“Module.MyViewController”。

刚刚经历了同样的问题。 对于我来说,它是键盘目标的“常规设置”中的“主界面”属性。 这是空白的,我把它设置为我的故事板文件,现在它像一个魅力。 截图

最终,我试图从目标中删除NotificationCenter.framework,并将其放回原处,清理了项目,现在又重新运行了。 我猜这个框架毕竟没有正确的连接,尽pipe我可以用xcode在我的目标上看到它。 此外,我不知道为什么它的工作,然后停止工作与8.1.2的到来。