在用数据填充实体后创建 Core Data 关系

Posted

技术标签:

【中文标题】在用数据填充实体后创建 Core Data 关系【英文标题】:Creating Core Data relationships after filling up entities with data 【发布时间】:2010-11-29 01:33:47 【问题描述】:

假设您有几个核心数据实体 .. Student 和 Exam。这两个最初填充了从网上下载的两个 xml 文件的数据。

现在,学生和考试是分开的事情......最初它们之间没有任何联系。但在填写完这两个实体后,我可能想将某些学生与某些考试联系起来。或者我可能想让所有学生参加特定的考试。但我仍然希望能够将考试视为独立的事物,可能没有学生联系。

我不确定如何使用 Core Data 执行此操作。在数据模型中,您要么有关系,要么没有。我是否应该有两个不同的考试实体...一个用于独立考试,一个连接到学生,可以从另一个考试实体建立?

【问题讨论】:

【参考方案1】:

不,您不应该创建两种实体类型。

仅仅因为您在两种实体之间存在关系并不意味着您不能创建该关系为零的对象。

因此,假设您在 StudentExam 之间存在多对多关系,您可以通过执行以下操作来创建新考试:

Exam *newExam = [NSEntityDescription
     insertNewObjectForEntityForName:@"Exam"
     inManagedObjectContext:context];
newExam.course = @"CS 101";
newExam.description = @"Midterm";

您稍后可能会在学生和该考试之间建立关系,例如:

[newExam.students addObject:aStudent];

(其中studentsExamStudent之间关系的名称

【讨论】:

诀窍是使关系成为可选的。这样,如果一个 Student 对象需要一个 Exam 关系,它就可以有一个关系,但如果它没有一个,则没有问题。【参考方案2】:

我认为您应该在两个实体(考试和学生)之间建立关系,但将其标记为可选。

【讨论】:

以上是关于在用数据填充实体后创建 Core Data 关系的主要内容,如果未能解决你的问题,请参考以下文章

与 Core Data 和 RestKit 无关的关系

在 Core Data 中为实体添加属性

Swift & Core Data - 将实体添加到现有实体

在 Core Data 中替换多对多关系中的实体

UICollectionview 在使用 Core Data 保存实体后重新加载数据

iPhone如何使用NSPredicate按父实体过滤Core Data?