核心数据:如何删除关系中的实体

Posted

技术标签:

【中文标题】核心数据:如何删除关系中的实体【英文标题】:Core-Data: How to Delete Entities in a Relationship 【发布时间】:2010-03-10 16:51:18 【问题描述】:

我在 iPhone 上有一个复杂的核心数据图。一个用户实体有很多其他实体,这些实体相互关联,具有多种关系等......

我的问题是如何在删除用户实体时删除所有相关实体。

提前致谢!

【问题讨论】:

“复杂的核心数据结构”是指你有一棵树吗?你再模糊不过了。你在问什么??? 【参考方案1】:

在您的用户实体中,将每个关系删除规则设置为“级联”。

另外,请参阅 this answer 至 iPhone Core Data: Cascading delete across a many-to-one relationship。

【讨论】:

【参考方案2】:

您将用户实体端的delete rule 设置为级联。当用户实体被删除时,与删除规则级联相关的所有其他实体也将被删除。如果它们同样与其他实体有关系,您也可以将这些关系的删除规则设置为级联。当您删除最顶层的节点时,这将删除整个逻辑树。

例如

user--(phoneNumbers,Cascade)->>phoneNumber
user<--(user,nullify)--phoneNumber

删除用户触发删除电话号码,但删除电话号码只是取消与用户的关系。否则用户实体不受影响。

如果你有一棵树……

user--(phoneNumbers,Cascade)->>phoneNumber--(phoneNumbers,Cascade)->>areaCodes

...然后删除用户会删除其所有电话号码,删除电话号码会导致删除其所有区域代码

【讨论】:

以上是关于核心数据:如何删除关系中的实体的主要内容,如果未能解决你的问题,请参考以下文章

删除时如何手动管理Core Data关系

核心数据:删除最后一个具有一对多关系的实体

如何在关系变空时删除托管对象

如何创建从一个实体到另一个现有实体的核心数据关系?

无论删除规则如何,都无法删除核心数据实体

iOS:删除核心数据中具有一对多关系的实体