iPhone核心数据问题:referenceData64仅为抽象类定义

时间:2010-03-04 04:12:37

标签: iphone xml core-data

我有一个应用程序,它下载/解析一个大的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个实体

我不知道如何继续调查这个问题,任何人都知道如何解决这个问题?

由于 /奥斯卡

2 个答案:

答案 0 :(得分:5)

我在核心数据和多线程操作方面遇到了同样的问题。 阅读此article以了解问题。

在工作线程中,我开始为NSManagedObjectContext使用函数 lock,unlock ,并且不再重复崩溃。

答案 1 :(得分:1)

您是否为实体使用自定义NSManagedObject子类?如果您在initWithEntity:insertIntoManagedObjectContext:

中执行了错误的初始化等,则可能会出现此问题