1

我对核心数据有点陌生,目前正在尝试利用父实体。现在,我有这种模型

实体:

ThemePark -> hasAttractions(一对多关系)

WaterPark -> hasAttractions(一对多关系)

Attractions -> inThemePark(hasAttractions 的反比关系)

Attractions -> inWaterPark(hasAttractions 的反比关系)

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

如果我执行以下操作

Attractions -> inGenericPark(与 GenericPark 中的 hasAttractions 相反)

如何确定 GenericPark 是 waterPark 还是 ThemePark?

我应该如何在使用父实体的同时修改这个模型?

提前致谢!!!

4

2 回答 2

2

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

例如:

if ([@"WaterPark" isEqualToString:[[somePark entity] name]]) {
  // do watery things
}
于 2012-08-30T17:02:42.800 回答
1

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

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

if ([genericParc isKindOfClass:[ThemeParc class]]) {
    // It is a ThemePark:
    ThemeParc *themePark = (ThemeParc *)genericPark;
    // ... 
}
于 2012-08-30T16:33:51.483 回答