如何从WatchKit Extension调用CoreData代理框架?

时间:2015-06-11 16:28:21

标签: ios iphone swift core-data watchkit

我已经在Xcode中设置了一个iPhone应用程序,并根据苹果的建议添加了一个Cocoa-Touch iOS框架来处理数据。

基本上,我已完成本教程中的所有内容:

http://www.telerik.com/blogs/send-data-to-apple-watch-with-core-data-and-telerik-ui-for-ios-in-swift

在iPhone方面它可以很好地调用函数但是如果我尝试调用完全相同的函数,我会遇到这个可怕的错误:

  

致命错误:在解包可选值时意外发现nil

在逐行注释并运行代码后,我确定这是违规行(两个数据处理函数中都有相同的行):

{{1}}

感谢任何帮助或想法!

2 个答案:

答案 0 :(得分:0)

错误说unexpectedly found nil while unwrapping an Optional value。当您使用self.managedObjectContext!时,您的代码行会完全展开一个可选代码,以便解决问题。出于某种原因,您尝试使用self.managedObjectContext,但尚未将其初始化为具有任何值。您需要先设置上下文和Core Data堆栈的其余部分,然后才能使用它。

在该教程中,lazy var managedObjectContext: NSManagedObjectContext?如果无法创建持久存储协调器,则可能返回nil。如果它不能创建持久存储文件,那么反过来可能是零。在解决问题之前,您需要弄清楚为什么self.managedObjectContext为零。

答案 1 :(得分:0)

我弄清楚问题是什么。我已经将框架中的文件添加到了iphone应用程序的目标以及watchkit扩展中,Apple建议不允许这样做,如果您尝试这样做,它们会阻止您的应用程序从商店中删除:https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html

无论如何,如果你遇到这个你需要做的是取消目标(数据模型和swift文件):

enter image description here

从这里开始:

enter image description here

因此,只有您的框架被标记为目标。现在我的手表应用程序适用于CoreData!那是痛苦的几天......