我已经在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}}
感谢任何帮助或想法!
答案 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文件):
从这里开始:
因此,只有您的框架被标记为目标。现在我的手表应用程序适用于CoreData!那是痛苦的几天......