CoreData - 一对多建模关系是一对一的

时间:2011-11-26 18:53:04

标签: objective-c ios core-data one-to-many

我是Core Data建模的新手,我很难理解一对多关系是如何工作的。

我有一个名为Task的父实体,它可以有多个Comment实体实例。我将其建模如下:在Comments上,与Task的关系称为taskTask实体为目的地。在Task上,一个名为comments的关系,其中Comment为目的地,两个关系都是相反的。

未在警告或错误消息中定义反向结果。虽然这种方式建模有效,但我注意到,一旦我为给定的Task创建第二条评论,第一条评论就会被替换(一对一的关系)。

告诉核心数据模型这种关系允许在一个Task中发表许多评论的正确方法是什么?

此外,由于CoreData似乎自己管理主键,我如何创建NSPredicate来检索给定任务的所有注释?

感谢您的任何建议!

1 个答案:

答案 0 :(得分:42)

首先,您需要在plural实体中设置Task选项,在.xdatamodeled中选择它,然后选择relationship Task属性实体到comments您应该能够看到此enter image description here

有一个plural选项,请务必检查出来。您必须重新创建NSManagedObject如果您使用生成的类,并且如果您使用的sqlite存储必须删除并重建,那么它不会抱怨新模式与旧模式不同。

要检查您是否有一对多的关系,您的Task实体应该有一个名为comments的属性,这是NSSet的类类型而不是评论。

如果要检索给定任务的所有注释,则需要迭代该任务的NSSet(comments)属性。