0

我有一个核心数据生成类“项目”。它具有“类型”的属性,这是另一个类。

我已经自定义了“setType”,以便进行其他一些处理 - 例如,我更新了“dateTypeLastSet”。到目前为止,这工作正常。

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

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

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

任何解释或建议表示赞赏。

更新

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

所以现在的问题变成了 - 将删除规则从无效更改为其他影响是什么?为什么这被视为合理的默认值?

4

1 回答 1

1

似乎 nullify 是一个合理的默认值,因为一旦“类型”不再存在,有一个指向它的流浪指针可能是危险的。如果您在文档中查找 NSNoActionDeleteRule ,它会说:

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

于 2012-04-13T14:56:43.720 回答