抽象实体和继承
我对F1比赛有3个实体数据模型:抽象实体和继承
- RacingActor:抽象实体
- 试点:从RacingActor继承
- 团队:从RacingActor 继承
如果我产生NSManagedObject
子类来代表这些实体,产生这一切的设计并不代表代码:
- 一切继承
NSManagedObject
- 没有什么能阻止我从实例RacingActor
- 在试点的团队属性是
NSManagedObject
类型而不是团队
这是预期的行为?我应该修复由Xcode生成的代码吗?我错过了什么吗?
顺便说一句,我使用的Xcode 4.3.3
核心数据为核心是一个对象关系映射库。很久以前,它被称为Entreprise Object Framework,它是WebObjects的一部分。
所以,核心数据管理的任何持久对象的基础对象是NSManagedObject
,你可以随心所欲地做任何事情。
在您的示例中,Team and Pilot将共享一张公用表,您将可以使用查询一次检索小组和飞行员。这是主意。
Objective-C继承树(如果您使用自定义类)可以镜像您定义的模型,但它不需要。您可以创建自定义RacingActor
类,将其用作自定义类Team
和Pilot
类的基类,或者可以告知该模型使用RacingActor
代替Team
和Pilot
对象。如果需要,甚至可以为Team
和/或Pilot
定义完全不相关的基类(直接或间接提供NSManagedObject
是父项)。
然后,您可以自由地在业务逻辑中实现您需要的特定行为,无论是在控制器中还是在自定义数据类中。
我建议不要在核心数据中进行继承,除非你的数据集非常小。随着继承性能下降非常快。请参阅http://stackoverflow.com/questions/5276369/prevent-core-data-from-combining-entities-into-one-table?lq=1和http://stackoverflow.com/questions/6917494/core-data - 性能与 - 单亲实体?LQ = 1。 – jjxtra 2014-04-21 21:18:09
[This](http://stackoverflow.com/a/6920736/832111)答案让我相信实体继承/抽象实体不是正确的选择。 – 2013-08-18 19:48:38