图片我有2个核心数据实体,即EntityA和EntityB。
EntityA有许多EntityB,而EntityB属于一个EntityA,即:
EntityA ----- (entities) ->> EntityB
EntityB ----- (entity) ----> EntityA
现在图片我有一个EntityA *entityA
已经有一些entities
。
现在我执行以下操作:
entityA.entities = @[/* some new entityB's */];
现在,“旧”实体B将entity
nil
,因此“悬空”。我想删除这些entityB,是否有选项可以这样做?当然我可以手动完成,但我觉得Core Data有一些自动执行此操作的方法。
答案 0 :(得分:0)
CoreData仅为您提供“删除规则” - 如果您要删除 EntityA实例,它可以执行特定操作(例如Cascade)以删除所有相关的EntityB实例。
但是您的情况不同 - 您正在删除EntityA实例与之前分配给它的EntityB对象的所有实例之间的关系。 CoreDate无法确定代码背后的逻辑 - 也许您想要删除所有这些EntityB实例,但是您可能希望稍后将它们重新分配给EntityA的不同实例?或者使用“孤立的”EntityB对象做一些完全不同的事情?
因此,您有责任手动删除它们。
答案 1 :(得分:0)
首先:调用你的关系entities
是非常难以理解的。也许这仅仅是出于这个例子的目的。否则,请争取具体和逻辑的自然语言变量名称。
第二:如果你想删除实体和切断与他人的关系,只需删除它们即可。如您所料,Core Data为您带来了神奇的魅力。
确保您的父实体没有最小entities
约束,否则您将获得验证失败。