2012-04-13 37 views
0

我有一个核心数据生成的类'item'。它具有“类型”的属性,这是另一类。删除之后了解核心数据并保存NSManagedObjectContext

我定制了'setType',以便进行其他一些处理 - 例如我更新'dateTypeLastSet'。到目前为止,这工作得很好。

但是,由于某些原因,当我删除该项目时也会发生这种附加处理。具体来说,直到我在NSManagedObjectContext上调用'save'时才会发生。

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

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

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

UPDATE

事实证明,当类型被删除,它确实设置属性为nil - 我注意到,数据实体的删除规则是默认抵消。如果改成不采取行动,我没有这个问题。

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

回答

1

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

“如果你使用这个规则,你是负责维护的对象图中 完整性此规则是强烈反对的 所有,但高级用户。 “。

+0

然后我只是不明白如何有可能在我的setType方法有自定义代码,因为它总是会在我删除项目时被调用。 – 2012-04-13 15:00:49

+0

我想这取决于nil作为显式设置和nil作为系统需要使用的值之间的差异。你可以定义一个空类型的'type'对象,并将它用于显式的setType:? ...使用NSNull的方式? – 2012-04-13 15:07:57

+0

我可以。我猜我只是觉得很痒。 – 2012-04-13 15:26:16