我有一个应用程序,它下载/解析一个大的XML文件,并使用核心数据(大约4000个对象(实体))存储信息。 XML在另一个线程中加载/解析,该线程有自己的NSManagedObjectContext。
当尝试将实体保存到持久性存储时,我有时会收到以下错误(大约20%)
2010-03-03 23:41:42.802 xxx [7487:4203] XML保存中的异常
2010-03-03 23:41:42.802 xxx [7487:4203]描述: * -_referenceData64仅为抽象类定义。定义 - [NSTemporaryObjectID_default _referenceData64]!
2010-03-03 23:41:42.803 xxx [7487:4203]名称:NSInvalidArgumentException
2010-03-03 23:41:42.804 xxx [7487:4203] UserInfo:(null)
2010-03-03 23:41:42.805 xxx [7487:4203]原因:* -_referenceData64仅为抽象类定义。定义 - [NSTemporaryObjectID_default _referenceData64]!
我有一个简单的整数来跟踪应用程序在保存之前与NSManagedObjectContext中的insertedObjects属性相比所创建的实体,当我收到错误时,这些数字不匹配,NSManagedObjectContext中的insertedObjects缺少大约10个实体
我不知道如何继续调查这个问题,任何人都知道如何解决这个问题?
由于 /奥斯卡
答案 0 :(得分:5)
我在核心数据和多线程操作方面遇到了同样的问题。 阅读此article以了解问题。
在工作线程中,我开始为NSManagedObjectContext使用函数 lock,unlock ,并且不再重复崩溃。
答案 1 :(得分:1)
您是否为实体使用自定义NSManagedObject子类?如果您在initWithEntity:insertIntoManagedObjectContext: