我们在一对多关系中有一个Listing实体和一个ListingAddress实体。如果没有列表,则不应存在ListingAddress。我希望从上下文的地址关系中删除的任何ListingAddress都要从上下文中删除。这是可能的,还是我必须手工完成?
答案 0 :(得分:3)
你必须手工完成。
如果列表被删除,那就很简单了。请参阅Relationship Delete Rules。您可以将其设置为“级联”,从而自动删除相关对象。您当然还需要save
对上下文所做的任何更改:
级联
删除关系目的地的对象。 例如,如果删除部门,则同时解雇该部门中的所有员工。
但在您的情况下,如果未删除列表,则必须手动清除您的孤立的ListingAddress对象。以下是一些涉及该问题的帖子:
答案 1 :(得分:2)
当您从关系中删除实体时,没有自动删除实体的方法,但您可以执行相反的操作。删除实体时,可以从关系中删除实体。在ListingAddress实体上使用Nullify删除规则。它仍然只需要一行代码。您编写删除代码,而不是删除代码。除非这是一个多对多的关系,否则这应该适合你的目的。
答案 2 :(得分:0)
你可以检查一下willSave方法,如果有任何listAddress的孤儿,如果有的话,可以设置为删除
override func willSave() {
super.willSave()
if self.deleted {
return
}
if self.listingInverseRelationship == nil {
self.managedObjectContext?.deleteObject(self)
}
}