示例:我有一个名为Car
的实体 abstract 。然后有两个子实体Cabriolet
和Pickup
。
现在我有一个名为Driver
的实体,它与实体currentCar
之间有一个名为Car
1..1的关系。因此,我可以为任何驾驶员的currentCar属性分配Cabriolet或Pickup。然后,当我从驱动程序获取currentCar时,我需要内省对象以在运行时找到我是否有Cabriolet或Pickup。这是Core Data中的有效设计吗?
答案 0 :(得分:2)
我不明白为什么这不会在技术层面上起作用,但它确实违反了OOP多态性。
为什么你需要知道汽车的类型?您是否能够在抽象超类(Car
)上定义方法并在子类(Cabriolet
和Pickup
)中适当地覆盖它们?您是否可以重构汽车层次结构,以便子类的属性变得更加通用并将它们移动到Car
的属性,从而消除了对子类的需求?
在获取从公共超类派生的对象时,我遇到了NSFetchResultsController
的问题。 (返回的对象只能按实体的属性进行排序/分组。类类型不是属性,因此不能用于对实体进行排序/分组。我的解决方案/ hack是type
属性的超级 - 丑陋,但它有效。)