【发布时间】:2012-12-01 22:58:41
【问题描述】:
在将 iOS 6.0.1 上的 Core Data 托管对象上下文保存到 SQLite 存储时,我遇到了一个奇怪的“CoreData 不支持持久的跨存储关系”异常。它涉及模型中 Quotes 和 AbstractSources 之间的一对一关系。在运行时,它涉及 Quote 和 Book(其中 Book 继承自 AbstractSource。在模型编辑器中一切正常。)
我研究了类似的报告并涵盖了报告的原因:
- 我将 Quote 和 Book 分配给同一个持久 使用 assignObject:toPersistentStore: 存储,所以两者都不存在 未分配。
- 错误描述显示所有“绝对”x-coredata ids 开始 具有相同的前缀(例如 “x-coredata://82B3BEB3-60F2-4912-AC80-11AAD29CFF99/”,所以有 真的好像只有一间店在用。
我的问题是:
- 还有什么我需要检查的(也许 sg. 与 AbstractSource,我没有在我的源代码中触摸/控制它?我是 通过调用创建 Quote 和 Book initWithEntity:insertIntoManagedObjectContext 每个。)
- 我注意到错误描述还包括几个 “相对”x-coredata id(形式为“x-coredata:///...”)。可以 是绝对形式总是被认为是 “跨数据库”,即使“绝对”前缀(参见上面的示例)相同? 如果是这样,我怎么能影响“绝对”和“绝对”之间的任何选择? “相对”x-coredata id?
感谢(非常)您的关注!
【问题讨论】:
-
+1 是一个写得很好的问题。
-
x-coredata://82B3BEB3-60F2-4912-AC80-11AAD29CFF99/ = 尚未保存的对象的临时 ID
-
@Daij-Djan thx (Danke) 进行澄清。我仍然假设 id (82B3BEB3-60F2-4912-AC80-11AAD29CFF99) 表示在保存时将使用哪个持久存储,并且 Quote 和 Bock 的 id 都是相同的。
-
我不知道如何查看基于该 ID 使用的持久存储。 (Ich habe aber keinen Plan!)..也许......不抱歉:D