在一对多关系中,是否有删除规则在删除所有者的最后一个成员时删除所有者



我在核心数据中有一个一对多的关系。例如,在 A->B 中,A 是部门,B 是员工。一个部门可以有多个员工,一个员工只能有一个部门。

我设置了 A->(casacade)->B,所以如果我删除 A,所有 B 都将被删除。

相反,我也可以删除B。在我删除最后一个 B 的情况下,是否有任何删除规则以便 A 会自动删除?或者我必须以编程方式删除 A?有什么我应该注意的吗?

在本书 https://www.objc.io/books/core-data/的示例应用程序中,我们准确地展示了这个用例。

基本上,您要做的是覆盖prepareForDeletion(删除对象时会调用它)。在那里,您要检查未删除的数组或对象集是否为空:

在这里,一个国家/地区的prepareForDeletion检查其(父)大陆是否还剩下任何未删除的国家/地区:

public override func prepareForDeletion() {
    guard let c = continent else { return }
    if c.countries.filter({ !$0.deleted }).isEmpty {
        managedObjectContext?.deleteObject(c)
    }
}

最新更新