使用核心数据的父实体继承和反向关系
Posted
技术标签:
【中文标题】使用核心数据的父实体继承和反向关系【英文标题】:Parent entity inheritance and inverse relationships using core data 【发布时间】:2012-08-30 16:20:51 【问题描述】:我对核心数据有点陌生,目前正在尝试利用父实体。 现在,我有这种模型
实体:
ThemePark -> hasAttractions(一对多关系)
WaterPark -> hasAttractions(一对多关系)
Attractions -> inThemePark(hasAttractions 的反比关系)
Attractions -> inWaterPark(hasAttractions 的反比关系)
我想要的是一个父实体,比如说 GenericPark,它具有属性“hasAttractions”,但我不确定应该如何定义反向关系。
如果我执行以下操作
Attractions -> inGenericPark(GenericPark 中 hasAttractions 的倒数)
我如何确定 GenericPark 是水上乐园还是主题乐园?
在使用父实体的同时我应该如何修改这个模型?
提前致谢!!!
【问题讨论】:
【参考方案1】:每个NSManagedObject
实例,无论您是否定义了自定义子类,都有一个关联的NSEntityDescription
,它将告诉您它是什么类型的对象。只需在有问题的托管对象上调用-entity
。
例如:
if ([@"WaterPark" isEqualToString:[[somePark entity] name]])
// do watery things
【讨论】:
【参考方案2】:您应该为数据模型检查器中的每个实体分配一个自定义类(可以与实体同名),并为每个实体创建 NSManagedObject 子类(如果您还没有这样做的话)。
那么ThemePark
和WaterPark
都是GenericParc
的子类,您可以测试GenericParc
对象,例如与
if ([genericParc isKindOfClass:[ThemeParc class]])
// It is a ThemePark:
ThemeParc *themePark = (ThemeParc *)genericPark;
// ...
【讨论】:
以上是关于使用核心数据的父实体继承和反向关系的主要内容,如果未能解决你的问题,请参考以下文章