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