【问题标题】:In one-to-many relationship, is there a delete rule to delete the owner when its last member is deleted?在一对多关系中,是否有删除规则在删除其最后一个成员时删除所有者?
【发布时间】:2016-01-25 01:18:59
【问题描述】:

我在 Core Data 中有一对多的关系。例如,A->B,其中 A 是部门,B 是员工。一个部门可以有很多员工,一个员工只能有一个部门。

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

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

【问题讨论】:

标签: core-data


【解决方案1】:

在我们的书 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)
    }
}

【讨论】:

  • 国家个数为0的话,不是大陆有责任自行删除吗?国家不应该决定这一点。
  • 从概念上讲你是对的,但这不是已经存在的删除规则
猜你喜欢
  • 2011-09-29
  • 2020-03-16
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多