核心数据executeFetchRequest返回NSManagedObject

时间:2013-09-08 07:37:04

标签: ios core-data

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

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

换句话说,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。

为什么?

1 个答案:

答案 0 :(得分:1)

您必须在Core Data Model检查器中设置实体的“Class” 到托管对象的子类。

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