核心数据 executeFetchRequest 返回 NSManagedObject
Posted
技术标签:
【中文标题】核心数据 executeFetchRequest 返回 NSManagedObject【英文标题】:Core data executeFetchRequest returns NSManagedObject 【发布时间】:2013-09-08 07:37:03 【问题描述】:在核心数据中,我有三种类型的实体。 实体 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 类。 但是,使用完全相同的代码,如果我将 EntityA 替换为上面的 EntityB,如果我检查 arrayOfEntity[0] 的类,它不会说 EntityA,而是说它是类 NSManagedObject。
这是为什么呢?
【问题讨论】:
如果“EntityB”的“Class”设置为“EntityB”,您是否在 Core Data Model 检查器中进行了检查? 实体属性中设置实体类了吗? 宾果游戏你们是对的。谢谢大佬。 【参考方案1】:您必须在核心数据模型检查器中设置实体的“类” 到您的托管对象子类。
(如果您为实体创建一个自定义类,则该类将自动设置 Xcode 菜单中的“Editor -> Create Managed Object Subclass ...”。)
【讨论】:
以上是关于核心数据 executeFetchRequest 返回 NSManagedObject的主要内容,如果未能解决你的问题,请参考以下文章
核心数据 executeFetchRequest 返回 NSManagedObject
核心数据 executeFetchRequest 因 exc_bad_access 而失败
核心数据 fetchRequest 给出 executeFetchRequest:error: <null> is not a valid NSFetchRequest
NSPredicate,executeFetchRequest 崩溃