【发布时间】:2011-01-01 20:05:43
【问题描述】:
我正在做一个 iPhone 应用程序,它从 XML 文件中读取数据,将它们转换为 Core Data Managed Objects 并保存它们。
应用程序运行良好,主要是在包含约 150 个对象的较小数据集/XML 上。我说主要是因为 10% 的情况下,我会在尝试保存上下文时从 CoreData 获得以下异常:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -_referenceData64 仅为抽象类定义。定义 -[NSTemporaryObjectID_default _referenceData64]!'
在更大的数据集(~2000)上,这种情况每次都会发生,但不会发生在同一个地方。它可能会在第 137 条记录、第 580 条记录或最后一个记录中失败。我试过移动保存点(每个对象,每 10 个对象,在所有对象都分配/初始化后保存),但我总是遇到上面的异常。
我用谷歌搜索了异常,发现有人遇到同样的问题,但没有看到任何解决方案。
我的下一步是将托管对象和关系简化到该错误停止并从那里构建以隔离问题的程度。最后的办法是抛弃 Core Data,直接存储到 sqllite 中。
感谢您的帮助!
【问题讨论】:
-
您是否在模型中使用任何抽象实体?
-
嗨,Marcus,我没有使用抽象实体,但我使用了多个线程,并且我没有意识到在线程中使用 Core Data 的规则。
-
我不完全确定,但在我看来,您有一个要实例化的抽象实体。你能告诉我们继承吗?多么奇怪的错误信息!
-
我希望上帝我错了,因为我在同一条船上,但它是否有可能与 iphone 受限内存全部在更大的 xml 文档上用完有关?我正在使用一个 DOM 解析器,它在处理之前将所有内容存储在 xml 文档中......你在使用什么?
标签: iphone exception core-data