删除关系后删除子实体

时间:2013-02-23 21:13:37

标签: objective-c core-data

包含OneToOne关系Library -- Boss

Library --(Cascade)--> Boss
Boss    --(No Action)--> Library

用例:替换老板。替换意味着从数据库中删除旧值,在数据库中保存新值并设置关系的新值。如果我设置一个新boss并保存上下文,则插入新boss,将关系设置为新boss,但旧boss不会被删除,只会使库密钥无效。我如何从数据库中删除旧老板?

2 个答案:

答案 0 :(得分:0)

您可以将NSManagedObject子类化为Boss,并覆盖 - (void)willSave,并在必要时删除该方法中的对象。

作为旁注,在这种情况下,您应该使用Nullify而不是No action。没有动作会造成麻烦,而且很少有用。见https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html

答案 1 :(得分:0)

所以你将库和boss之间的删除规则设置为“cascade”,对吧? 在这种情况下,只有当没有其他实体提到老板时,老板才会被删除。引用计数的排序。您确定您的数据库中没有当前指向老板实体的记录/实体吗?