【发布时间】:2012-02-03 05:05:48
【问题描述】:
我有一个 NSManagedObject ElementA,它有几个属性,应该通过父子关系存在于 ElementB 中。将 ElementA 设置为 ElementB 的父实体时,NSPersistentStoreCoordinator 失败。 ManagedObjectModel 正在正确构建,并且实体/类彼此分开工作。应用程序失败和编译之间的唯一区别是这种父子关系。任何一个实体的属性都不重叠。
我还没有足够的代表,所以图片位于以下链接:ElementA Model、ElementB Model。
就故障排除而言,我已经尝试了以下所有方法:
- 实现和不实现自定义类。
- 将 ElementA 设置为抽象(但我需要它不是抽象的)
- 一次删除然后添加一个属性(包括清空两个实体的所有属性)
- 重置 Xcode(清理)、模拟器(全部重置)并重新启动我的机器。
我阅读了 Apple 的文档(核心数据编程指南:托管对象模型),一切似乎都符合他们的实体继承指南。
这是失败的那一行:
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
我在这里似乎缺少什么?这必须很明显,因为这似乎不应该这么难。感谢您提供任何和所有帮助!
编辑@Rog 的评论
在启动时第一次访问核心数据模型时,应用程序就会失败。上面的新图像显示我正在尝试使用模型编辑器设置 ElementB 的父实体。以下是我收到的错误消息:
uncaught exception 'NSInternalInconsistencyException', reason: 'Bad model. For entity 'ElementA' subentity 'ElementB (0x785d790)' is not registered in NSManagedModelModel. Model has a reference to ElementB (0x785e320)'
【问题讨论】:
-
您需要提供更多详细信息。发布您的托管对象模型视图的屏幕截图。此外,它何时崩溃 - 在启动期间,在实例化托管对象之一时。您如何将 ElementA 设置为 ElementB 的父/超类?您遇到什么错误?
标签: objective-c core-data nsmanagedobject