CoreData に「NoteEntity」という名前のエンティティを作成し、NSManageObject サブクラスを生成します
@interface NoteEntity : NSManagedObject
@property (nonatomic, retain) NSDate * time;
@end
次に、Observer を追加して、オブジェクトを選択したときに時間の変化を確認します。
[self addObserver:self forKeyPath:@"noteEntity.time" options:NSKeyValueObservingOptionOld context:KNoteEntityTime];
オブザーバー コード:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ( context == KNoteEntityTime ) {
NSDate *oldTime = (NSDate *)[change objectForKey:NSKeyValueChangeOldKey] ;
if (oldTime != NULL) {
NSLog(@"CHANGE:From %@ - %@",oldTime,self.noteEntity.time);
}
}
else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}
noteEntity.time が NULL から変更されたかどうかを確認する必要がありますが、if (oldTime != NULL) または if(oldTime) は機能しません。ログは次のとおりです。
CHANGE:From <null> - (null)
CHANGE:From <null> - 2013-07-29 10:15:58 +0000
私が間違っていることを見つけるのを手伝ってください。ありがとう!