重新分配时删除核心数据对象

时间:2019-04-29 17:40:04

标签: core-data

在核心数据中,是否有可能在重新分配对象后自动删除对象?

例如,如果我有

class Person: NSManagedObject {
  @NSManaged public var name: String?
  @NSManaged public var group: Group?
}

class Group: NSManagedObject {
  @NSManaged public var people: Set<Person>?
}

并将新集合分配给组的people属性:

group.people = [some new set of <Person>]`

,然后保存当前上下文。我希望删除先前集合中的所有先前Person对象。 在新分配之前,我是否必须手动调用delete?还是有另一种方法?

1 个答案:

答案 0 :(得分:1)

如评论中所述,事实证明,级联删除规则不会删除组的人员,除非您删除该组。因此,我删掉了我的答案,并替换成了这个。

如果您不想删除该网上论坛,则必须删除每个人 并将其从关系中删除。不过还算不错……

if let people = group.people {
    for person in people {
        if let person = person as? NSManagedObject {
            managedObjectContext.delete(person)
        }
    }
}
group.mutableSetValue(forKey: "people").removeAllObjects()

如果为NSBatchDeleteRequest配置了谓词以仅过滤相关组中的人员,则NSBatchDeleteRequest也可能会起作用,但是除非您有数千个要删除的人员,否则我不会打扰。