2011-07-28 59 views
2

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

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

UITableView,我希望看到两个记录,按变化日期分组。

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

我仍然SQL记住,这显然是错误关于CoreData思考,所以来我脑海的第一个解决办法是使用到A. 的关系也许增加一个新的实体,所以我不知道什么是为此,最好的方法是CoreData,也许有一个方便的机制来保存和调用给定日期时间的实体或特定属性的快照。

感谢

回答

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

+0

谢谢,真正的问题是如何以及在哪里存储这些变化。 – Leonardo

+0

您可以将一个属性添加到实体,该实体可以转换并存储以前条目的NSArray,并在每次属性值更改时更新它。或者,如果您希望存储更详细的信息,例如更改的时间戳,您可以添加与前一个关系相关的另一个实体。 – srgtuszy

+0

我更新了答案,因为出现了一个小错误 – srgtuszy