核心数据 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 崩溃

executeFetchRequest:error: 获取请求必须有一个实体

executeFetchRequest 包含“<null>”和我的数据