我正在经历一个神秘的核心数据崩溃,通过我的应用程序中的崩溃报告,我很难想出一个理论。没有繁殖步骤,没有明显的原因,但它发生了上千次。崩溃报告相当模糊,但当一个NSManagedObject通过属性分配给另一个时似乎会发生这种情况?任何理论都会受到赞赏。
*** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x1dc92160 <x-coredata://6
我已经找到了解决这个问题的办法,但我不太喜欢这个办法。我的问题是这样的。我使用一个NSFetchedResultsController来填充一个UICollectionView--它显示了一组图像。每个图像都由一个Core数据对象描述(例如,它的文件名在Core数据对象中)。
我有UI控件,允许用户同时删除多个图像,当用户删除多个对象时出现问题。删除的代码是:
for image in images {
CoreData.sessionNamed(CoreDataExtras.sessionName).remove(image)
}
CoreData.s
我和CoreData有点问题。在使用实体之前,我从Coredata中删除它们,并将它们打印出来,以确保它们确实被删除。在for循环之后,我再次将它们打印出来,即使我没有保存上下文,它们也已经被保存了。当我终止应用程序并重新加载时,数据就在那里,即使我从未保存过上下文,这是怎么回事?
DataController.shared.deleteAllModifiersFromCD()
DataController.shared.printExercisesAndModifiersFromCD()
for mod in modSnap {
我认为这是一个比较典型的问题,在后台线程上删除和更新CoreData数据时,当UITableView呈现以前的CoreData对象获取数组时,我会收到:
"NSObjectInaccessibleException CoreData could not fulfill a fault for"
我已经阅读了很多如何可能修复它的建议,但是在我盲目地添加代码之前,我想先重现这个问题。
对于我的测试用例,我有三个步骤。
从CoreData中获取项目
创建一个后台线程。在新线程中,创建长循环(可能是100个迭代),其中数据库被擦除并重新加载,就像崩溃中一样。后台线程创建一个新的
我正在编写基于Coredata文档的应用程序(即CoreData+NSPersistentDocument):当我创建一个新文档时,一个新的coredata堆栈被初始化,带有一个模型和一个托管上下文。
在用户保存文档之前,我需要做的是:-创建一个新的上下文-在其中创建许多新的托管对象-合并两个上下文。
我在新的上下文中发出save:,但它引发了异常"This NSPersistentStoreCoordinator has no persistent stores. it cannot exception a save operation.“。
我该怎么做?此操作前是否需要保存单据?