我是 Core Data 建模的新手,我很难理解一对多关系的工作原理。
我有一个名为 Task
的父实体,它可以有多个 Comment
实体实例。我这样建模:在 Comments
上,与 Task
的关系称为 task
,Task
实体是目的地。在 Task
上,一个名为 comments
的关系,以 Comment
作为它的目的地,并且这两个关系是彼此相反的。
不定义逆函数会导致警告或错误消息。在以这种方式建模时,我注意到一旦我为给定的 Task
创建了第二个评论,第一个就会被替换(一对一关系)。
告诉核心数据模型这种关系允许在一个 Task
中进行许多评论的正确方法是什么?
此外,由于 CoreData 似乎自行管理主键,我该如何创建一个 NSPredicate
来检索给定任务的所有评论?
感谢您的任何建议!
最佳答案
首先你需要设置plural
Task
中的选项实体,在您的 .xdatamodeled
中选择它并选择 relationship
Task
的属性(property)实体到comments
你应该能够看到这个
有一个plural
选项一定要检查出来。您必须重新创建 NSManagedObject
如果您使用生成的类,并且如果您使用 sqlite 存储,则必须删除并重建,这样它就不会提示新架构与旧架构不同。
要检查您是否有一对多关系,您的 Task
实体应该有一个名为 comments 的属性,它是 NSSet
的类类型不是评论。
如果您想检索给定任务的所有评论,您需要迭代 NSSet(comments)
该任务的属性。
关于objective-c - CoreData - 一对多建模关系以一对一形式出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8280777/