ios – 尽管匹配x-coredata id,“CoreData不支持持久的跨店关系”

前端之家收集整理的这篇文章主要介绍了ios – 尽管匹配x-coredata id,“CoreData不支持持久的跨店关系”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在iOS 6.0.1上将Core Data托管对象上下文保存到sqlite存储时,我遇到了一个奇怪的“CoreData不支持持久的跨店关系”异常.它涉及模型中Quotes和AbstractSources之间的一对一关系.在运行时它涉及一个Quote和一本书(其中Book继承自AbstractSource.一切都在模型编辑器中运行良好.)

我研究了类似的报告,并报道了报道的原因:

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

我的问题是这些:

>还有什么我必须检查的(也许sg.与…有关
AbstractSource,我在源代码中没有触摸/控制?我是
通过调用来创建Quote和Book
initWithEntity:insertIntoManagedObjectContext each.)
>我注意到错误描述还包括几个
“相对的”x-coredata id(形式为“x-coredata:/// ……”).可以
绝对形式总是被认为是
“跨数据库”,即使“绝对”前缀(见上面的例子)是相同的?
如果是这样,我怎么能影响“绝对”和“绝对”之间的任何选择
“相对”x-coredata id?

Thx(很多)引起你的注意!

解决方法

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

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

问题现在已经解决,我还重构了我的代码/模型以使用(非重叠)configurations而不是显式赋值,这也应该有助于继续.

再次,请你注意

猜你在找的iOS相关文章