0

在核心数据中,我有三种类型的实体。实体 A、实体 B、实体 C

实体 C 与实体 A 是一对多的关系。实体 C 到实体 B 也是一对多的关系。

换句话说,A 和 B 都有一个inRecord指向实体 C 的单个实例的字段。

我有以下代码

    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"EntityA"];

    request.predicate = [NSPredicate predicateWithFormat:@"inRecord.title = %@", title];
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES];
    request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

    NSError *error = nil;
    NSArray *arrayOfEntity = [context executeFetchRequest:request error:&error];

现在,如果我检查 arrayOfEntity[0] 的类,它会说它属于 EntityA 类。但是,使用完全相同的代码,如果我用上面的 EntityB 替换 EntityA,如果我检查 arrayOfEntity[0] 的类,它不会说 EntityA,而是说它是类 NSManagedObject。

这是为什么?

4

1 回答 1

1

您必须在核心数据模型检查器中将实体的“类”设置为您的托管对象子类。

(如果您使用 Xcode 菜单中的“Editor -> Create Managed Object Subclass ...”为实体创建自定义类,则会自动设置该类。)

于 2013-09-08T07:51:12.687 回答