核心数据保存对象与现有对象的关系

Core Data saving Object's relationship to existing Object

如何保存 Todo 项并设置其与现有类别(如果已经存在)的关系?我知道如何创建一个新类别并将其与新 Todo 的关系设置为如下所示。我在一个表单中执行此操作。

Category 设置为 many Todos.

        let category2 = Category(context: viewContext)
        category2.id = UUID()
        category2.title = "Fun"

        let todo = Todo(context: viewContext)
        todo.title = "Hi"
        todo.dueDate = Date.now
        todo.relationship = category2

        try? viewContext.save()

//todo.relationship = create a new Category if one doesn't exist, if it does exist, select that as the relationship. If no category, then do nothing

我一直在关注这个解决方案https://www.youtube.com/watch?v=y1oWprQqLJY&t=483s,它有同样的问题,每次按下按钮都会创建一个新的“原点”。

我的代码很好,我只是缺少此处解释的合并策略。如果您正在关注 Paul 的 HackingWithSwift 视频,请确保您这样做...

这将处理重复项以及核心数据实体的约束集。

https://www.hackingwithswift.com/books/ios-swiftui/ensuring-core-data-objects-are-unique-using-constraints

    self.container.viewContext.mergePolicy = NSMergePolicy.mergeByPropertyObjectTrump