从我的应用中删除对象时出现以下错误。关于如何解决它的任何想法?
我仍在尝试重新创建流程,以确切了解崩溃的位置。
Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. CoreData could not fulfill a fault for '0x5adc8b0 <x-coredata://2B90C6EC-E046-4508-A1B1-6C4B19BF830D/Session/p1>' with userInfo {
NSAffectedObjectsErrorKey = (
"<Session: 0x6f7c830> (entity: Session; id: 0x5adc8b0 <x-coredata://2B90C6EC-E046-4508-A1B1-6C4B19BF830D/Session/p1> ; data: <fault>)"
);
*** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x5adc8b0 <x-coredata://2B90C6EC-E046-4508-A1B1-6C4B19BF830D/Session/p1>''
答案 0 :(得分:3)
A)如果您订阅了保存通知,Core Data会指向那里的失败。
B)“无法完成故障”消息通常与删除对象有关,之后应用的其他部分会尝试访问其中的任何属性。是的,即使是先前已经完成故障的那些。删除后整个对象无法使用。
答案 1 :(得分:0)
当我将托管对象传递给自定义NSOperation类时,我的代码中出现了这种情况。我的NSOperation将通过其to-many关系加载其他对象,处理它们,然后删除这些对象。如果它试图在多对多关系中搜索更多对象,它有时会因“CoreData无法完成故障”异常而崩溃。然后我记得在Core Data Programming Guide中读到关于“线程限制”的内容,所以我改变了我的代码,将一个密钥传递给了我的NSOperation类。然后,NSOperation类将在其自己的上下文中进行自己的搜索,以查找其自己的核心数据类实例。之后我停止了例外。 (我仍然需要使用保存通知。)