删除后了解核心数据并保存NSManagedObjectContext

时间:2012-04-13 13:31:07

标签: cocoa-touch core-data io nsmanagedobject

我有一个核心数据生成类'item'。它有'type'属性,这是另一个类。

我定制了'setType'以便进行其他处理 - 例如我更新'dateTypeLastSet'。到目前为止,此工作正常。

但是,出于某种原因,当我删除该项目时,也会发生这种额外的处理。具体来说,直到我在NSManagedObjectContext上调用'save'时才会发生这种情况。

这是因为删除会导致自动调用'setType:nil'吗?记录参数表明NULL是尝试的分配。

这对我来说会有问题,因为在我的附加处理代码中,我会执行一些计算。让我假装在那里存储一些“项目类型设置次数”的计数器。我不希望将删除和设置为nil计算。但我也不能只检查nil,因为这可能是一个合法的更新(nil作为一种类型可能是可以接受的)。

感谢任何解释或建议。

更新

事实证明,当删除类型时,它确实将该属性设置为nil - 我注意到默认情况下数据实体的删除规则是无效的。如果将其更改为无操作,我就没有这个问题。

现在问题变成了 - 从nullify更改删除规则的其他影响是什么?为什么这被视为明智的默认?

1 个答案:

答案 0 :(得分:1)

似乎nullify是一个合理的默认值,因为一旦'type'不再存在,有一个指向它的迷路指针可能是危险的。如果你在文档中查找NSNoActionDeleteRule,它会说:

  

“如果您使用此规则,则您有责任维护   对象图的完整性。强烈建议不要遵守此规则   除了高级用户之外的所有用户。“