首页 文章

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

提问于
浏览
18

我是核心数据建模的新手,我很难理解一对多关系是如何工作的 .

我有一个名为 Task 的父实体,它可以有多个 Comment 实体实例 . 我这样建模:在 Comments 上,与 Task 的关系称 taskTask 实体为目的地 . 在 Task 上,一个名为 comments 的关系,其中 Comment 为其目的地,两个关系彼此相反 .

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

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

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

谢谢你的任何建议!

1 回答

  • 42

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

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

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

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

相关问题