在核心数据中,是否有可能在重新分配对象后自动删除对象?
例如,如果我有
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?还是有另一种方法?
答案 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也可能会起作用,但是除非您有数千个要删除的人员,否则我不会打扰。