我是Core Data建模的新手,我很难理解一对多关系是如何工作的。
我有一个名为Task
的父实体,它可以有多个Comment
实体实例。我将其建模如下:在Comments
上,与Task
的关系称为task
,Task
实体为目的地。在Task
上,一个名为comments
的关系,其中Comment
为目的地,两个关系都是相反的。
未在警告或错误消息中定义反向结果。虽然这种方式建模有效,但我注意到,一旦我为给定的Task
创建第二条评论,第一条评论就会被替换(一对一的关系)。
告诉核心数据模型这种关系允许在一个Task
中发表许多评论的正确方法是什么?
此外,由于CoreData似乎自己管理主键,我如何创建NSPredicate
来检索给定任务的所有注释?
感谢您的任何建议!
答案 0 :(得分:42)
首先,您需要在plural
实体中设置Task
选项,在.xdatamodeled
中选择它,然后选择relationship
Task
属性实体到comments
您应该能够看到此
有一个plural
选项,请务必检查出来。您必须重新创建NSManagedObject
如果您使用生成的类,并且如果您使用的sqlite存储必须删除并重建,那么它不会抱怨新模式与旧模式不同。
要检查您是否有一对多的关系,您的Task
实体应该有一个名为comments的属性,这是NSSet
的类类型而不是评论。
如果要检索给定任务的所有注释,则需要迭代该任务的NSSet(comments)
属性。