这三种验证方法的实施有什么不同吗?

时间:2010-06-13 09:51:29

标签: iphone core-data

Core Data在某些情况下调用这些方法:

- (BOOL)validateForInsert:(NSError **)outError;
- (BOOL)validateForUpdate:(NSError **)outError;
- (BOOL)validateForDelete:(NSError **)outError;

我想知道他们是否做了不同的事情,或者他们是否真的在做同样的事情。

据我所知,这些方法为每个属性调用-validateValue:forKey:error:方法一次。

我能想象的唯一区别在于.validateForDelete:方法。除了应用删除规则之外,我认为没有理由在删除对象时验证对象,可能仅在DENY规则的情况下。

1 个答案:

答案 0 :(得分:1)

这些是生命周期验证方法。在许多情况下,验证问题根据对象的状态而不同。例如:

  • 除非儿童X为零
  • ,否则不要删除
  • 除非值X是唯一的,否则不要插入
  • 除非设置了孩子Y,否则不要更新

这些方法可以更精细地控制对象层次结构的完整性。