0

图片 我有 2 个核心数据实体,即 EntityA 和 EntityB。

EntityA 有许多 EntityB,而 EntityB 属于一个 EntityA,即:

EntityA ----- (entities) ->> EntityB
EntityB ----- (entity) ----> EntityA

现在图像我有一个EntityA *entityA已经有一些entities.

现在我执行以下操作:

entityA.entities = @[/* some new entityB's */];

现在,“旧”实体 B 将具有 a entityofnil并因此处于“悬空”状态。我想删除这些entityB,有没有办法这样做?当然我可以手动完成,但我觉得 Core Data 有一些方法可以自动完成。

4

2 回答 2

0

第一:打电话给你们的关系entities是非常难以理解的。也许这只是为了这个例子的目的。否则,请争取具体和合乎逻辑的自然语言变量名。

第二:如果你想删除实体切断它们与他人的关系,只需删除它们就足够了。正如您所料,Core Data 为您创造了奇迹。

确保您的父实体没有最小entities约束,否则您将获得验证失败。

于 2013-08-17T18:12:37.170 回答
0

CoreData 只为您提供“删除规则”——如果您要删除EntityA 的实例,它可以执行特定操作(例如 Cascade)来删除所有相关的 EntityB 实例。

但是您的情况不同 - 您正在删除 EntityA 实例与之前分配给它的 EntityB 对象的所有实例之间的关系。CoreDate 无法确定代码背后的逻辑 - 也许您想删除所有这些 EntityB 实例,但也许您想稍后将它们重新分配给不同的 EntityA 实例?或者用“孤立的”EntityB 对象做一些完全不同的事情?

因此,您有责任手动删除它们。

于 2013-08-17T17:08:59.033 回答