我有一个具有多个属性的实体,其中一个属性称为lastModificationDate。只要设置了任何对象的属性,我就想更新lastModificationDate。
如果我没有使用Core Data,我只会为属性提供自己的setter并更新lastModificationDate。但是,我不确定我是否应该使用CoreData的属性。
最好的方法是什么?
答案 0 :(得分:1)
可以轻松覆盖设置者,您必须确保为其他所有工作(包括KVO)发出正确的通知。
- (void) setThing:(NSObject *)myThing {
self.lastUpdateDate = [NSDate date];
[self willChangeValueForKey:@"thing"];
[self setPrimitiveThing:myThing];
[self didChangeValueForKey:@"thing"];
}
话虽这么说,如果您需要做的只是我展示的代码(基本上设置值并更新上次更新日期),您最好使用键值观察并对通知做出反应。它更容易,更清洁。
答案 1 :(得分:0)
如果您正在使用NSManagedObject子类,则不应覆盖属性mutators(setter),因为这些实现是在运行时提供的(因此@dynamic
而不是@synthesize
)。你可以,如果你真的想,但它更麻烦,没有理由。请改用键值观察(KVO)。当值发生变化时,它会通知您。