2010-06-13 48 views
0

核心数据在某些情况下,调用这些方法:这三种验证方法的实现是否有区别?

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

我不知道他们在做什么不同,或者如果他们基本上是做同样的事情。

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

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

回答

1

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

  • 不要删除,除非孩子X是无
  • 不要插入除非值X是唯一
  • 除非孩子Y已被设置

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

相关问题