核心数据是否可以立即删除具有级联删除规则的对象或者保存?

时间:2011-02-14 16:05:34

标签: objective-c cocoa cascading-deletes

在核心数据模型中,实体A与实体B有关系,删除规则设置为Cascade。调用[context deleteObject:A]时是否立即删除对象B,或者Core Data是否等待[context save:& error]方法,就像对象验证一样?

我想知道在删除A后,我可以创建一个对象C,然后在上下文中搜索B并建立关系。会阻止B被删除吗?

干杯, 埃里克保

1 个答案:

答案 0 :(得分:2)

“已删除”仅仅是一种状态。用户(或您的应用程序)保存时该状态的持久性是一个实现细节。如果文件尚未关闭且状态丢失,它仍可在保存后撤消。

如果您打算将A实例的B实例移动到另一个A实例,则需要在删除第一个A实例之前更改关系,否则级联规则将采用与它的Bs(根据规则的行为的确切定义)。一旦删除(无论是直接删除还是通过级联规则),它都会被删除。搜索不会显示已删除的Bs。

所以:如果你想保留A的B,在删除原文之前将B分配给另一个A.否则,您需要为新A创建新的B。