gpt4 book ai didi

ios - "CoreData does not support persistent cross-store relationships"尽管匹配 x-coredata id

转载 作者:IT王子 更新时间:2023-10-29 06:24:33 27 4
gpt4 key购买 nike

当将 iOS 6.0.1 上的 Core Data 托管对象上下文保存到 SQLite 存储时,我遇到了一个奇怪的“CoreData 不支持持久的跨存储关系”异常。它涉及模型中 Quotes 和 AbstractSources 之间的一对一关系。在运行时,它涉及一个 Quote 和一本书(其中 Book 继承自 AbstractSource。在模型编辑器中一切正常。)

我研究了类似的报告并涵盖了报告的原因:

  1. 我将引用和书籍分配给同一个持久性使用 assignObject:toPersistentStore: 存储,所以两者都不存在未分配。
  2. 错误描述显示所有“绝对”x-coredata ids 开始具有相同的前缀(例如“x-coredata://82B3BEB3-60F2-4912-AC80-11AAD29CFF99/”,所以有真的好像只有一家店在用。

我的问题是:

  1. 还有什么我需要检查的吗(也许是关于 sg.AbstractSource,我在我的源代码中没有接触/控制?我是通过调用创建报价和书籍initWithEntity:insertIntoManagedObjectContext 每个。)
  2. 我注意到错误描述还包括几个“相对”x-coredata ids(形式为“x-coredata:///...”)。可以绝对形式总是被认为是“跨数据库”,即使“绝对”前缀(参见上面的示例)相同?如果是这样,我怎么能影响“绝对”和“绝对”之间的任何选择?“相对”x-coredata ids?

非常感谢您的关注!

最佳答案

所以这就是(大概)造成了麻烦的原因:

  1. 我的托管对象上下文的协调器必须管理两个持久的商店。现在,我分配了 Quote 和 Book 的那个,我是希望他们保存在启动时重置。有一个错误在此代码中,这使该商店无法使用。自从第二个可用时它会默默接管,在这种情况下会导致不良结果。经验教训:我现在断言在设置核心数据堆栈后确实有/仍然有两个商店。
  2. 在我的核心数据模型的早期开发过程中,我重命名了一些它在模型编辑器中的实体。我只是错误地改变了名称,但不是实体类属性。所以实际上同时一切都在模型编辑器中运行良好,这在当时是出乎意料的类在运行时使用,因此意外的类在哪里也分配给意外/错误的商店。教训:我现在确定实体名称和它们的类属性保持完美同步(其他在允许的情况下)。

问题现已解决,我还重构了我的代码/模型以使用(非重叠)configurations而不是明确的分配,这也应该有助于前进。

再次感谢您的关注

关于ios - "CoreData does not support persistent cross-store relationships"尽管匹配 x-coredata id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13664616/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com