父实体继承和使用核心数据的反向关系

时间:2012-08-30 16:20:52

标签: objective-c ios xcode core-data

我对核心数据有点新意,目前我正在尝试使用父实体。 现在,我有这种模式

  

实体:

     

ThemePark - > hasAttractions(一对多关系)

     

WaterPark - > hasAttractions(一对多关系)

     

景点 - > inThemePark(hasAttractions的反向关系)

     

景点 - > inWaterPark(hasAttractions的反向关系)

我想要的是一个父实体,比如GenericPark,它具有属性“hasAttractions”,但我不确定应该如何定义反向关系。

如果我执行以下操作

  

景点 - > inGenericPark(GenericPark中hasAttractions的反转)

如何判断GenericPark是waterPark还是ThemePark?

在使用父实体时,我该如何修改此模型?

提前致谢!!!

2 个答案:

答案 0 :(得分:2)

每个NSManagedObject实例,无论您是否定义了自定义子类,都有一个关联的NSEntityDescription,它会告诉您它是什么类型的对象。只需在相关托管对象上调用-entity即可。

例如:

if ([@"WaterPark" isEqualToString:[[somePark entity] name]]) {
  // do watery things
}

答案 1 :(得分:1)

您应该为数据模型检查器中的每个实体分配一个自定义类(可以与实体具有相同的名称),并为每个实体创建NSManagedObject子类(如果您还没有这样做)。

然后ThemeParkWaterPark都是GenericParc的子类,您可以测试GenericParc个对象,例如与

if ([genericParc isKindOfClass:[ThemeParc class]]) {
    // It is a ThemePark:
    ThemeParc *themePark = (ThemeParc *)genericPark;
    // ... 
}