在核心数据中,我有三种类型的实体。 实体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。
为什么?
答案 0 :(得分:1)
您必须在Core Data Model检查器中设置实体的“Class” 到托管对象的子类。
(如果为实体创建自定义类,则会自动设置该类 Xcode菜单中的“Editor - > Create Managed Object Subclass ...”。)