跟踪核心数据实体的变化

时间:2011-07-28 08:48:41

标签: objective-c cocoa-touch core-data

我有一个使用CoreData的简单iOS应用程序。 出于特殊原因,我需要根据实体值在UITableView中显示历史记录。

我解释得更好,假设我的实体A的值为x的字段,那么在给定的日期我用xy改变了A的值。

UITableView中,我希望看到两条记录,按更改日期分组。

25/07/2011
A=x
28/07/2011 
A=xy

我仍在考虑使用SQL,这对CoreData来说显然是错误的,所以我想到的第一个解决方案是添加一个可能与A有关系的新实体。 所以我想知道什么是最好的CoreData方法,也许有一个方便的机制来保存和调用给定日期时间的实体或特定属性的快照。

感谢

1 个答案:

答案 0 :(得分:2)

您可以使用KVO (Key Value Observing)来实现此目的。每个NSManagedObject子类都可以覆盖:

- (BOOL)validateValue:(id *)value forKey:(NSString *)key error:(NSError **)error

你也可以覆盖这些,但不鼓励:

- (void)didChangeValueForKey:(NSString *)key

- (void)willChangeValueForKey:(NSString *)key

方法,每次为特定键路径更改值时都会调用它。我相信这会解决你的问题。查看KVO编程指南,以更深入地了解KVO主题@ http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html