我完全按照这个教程来做,它将CoreData添加到现有的应用程序中:https://www.youtube.com/watch?v=WcQkBYu86h8
当我到达seedPerson()moc.save()时,应用程序崩溃并显示以下错误:
核心数据:错误:尝试保存到从未打开过的文件时非法。“此NSPersistentStoreCoordinator没有永久存储(未知)。它无法执行保存操作。"。未记录上一个错误。
已添加NSManagedSubclass。
DataController已经连接好了,我可以进入它。直到保存()出现问题,你知道我可能遗漏了什么导致了这个错误吗?
5条答案
按热度按时间lymgl2op1#
我也看了YouTube教程,也遇到了同样的问题。我只是删除了添加持久性存储的后台线程块,它就工作了。下面是我的
DataController
:hm2xizp92#
不幸的是,该视频使用了Apple网站上的一些代码,并且该代码示例存在缺陷。主要缺陷是,它在将持久存储添加到MOC之前缓存了MOC。因此,如果存储创建失败,则将使用没有存储的持久存储协调器初始化托管对象上下文。
您需要使用调试器并逐步执行创建PSC的代码(DataController.init方法),然后查看失败发生的原因。如果您以与该示例相同的方式剪切/粘贴,那么您可能在示例化模型时忘记更改模型的名称。
在任何情况下,最可能的原因是该函数中的某些初始化代码失败了,而您随后可以愉快地沿着没有存储的核心数据堆栈。
5sxhfpxr3#
您需要加载持久性存储
v7pvogib4#
问题就在这两行字上:
&&
如果CoreData是由Xcode自动创建的,则需要将
DataModel
更改为应用程序的名称。请在AppDelegate.swift中查找这些行lrl1mhuk5#
如果这是你第一次运行的应用程序后,你把核心数据,那么也许它可以通过删除应用程序从模拟器,并再次运行它。
这是发生在我身上,它的工作后,我这样做。