1

いくつかのプロパティを持つエンティティがあり、そのうちの 1 つは lastModificationDate と呼ばれます。オブジェクトのプロパティのいずれかが設定されるたびに、lastModificationDate を更新したいと考えています。

Core Data を使用していない場合は、プロパティに独自のセッターを提供し、lastModificationDate を更新します。ただし、CoreData のプロパティをいじる必要があるかどうかはわかりません。

これを行う最善の方法は何ですか?

4

2 に答える 2

1

セッターのオーバーライドは簡単に実行できます。他のすべて(KVOを含む)が機能するように、適切な通知を送信する必要があります。

- (void) setThing:(NSObject *)myThing {
  self.lastUpdateDate = [NSDate date];
  [self willChangeValueForKey:@"thing"];
  [self setPrimitiveThing:myThing];
  [self didChangeValueForKey:@"thing"];
}

そうは言っても、私が示したコード(基本的に値を設定して最終更新日を更新する)だけを行う必要がある場合は、Key-Valueの監視と通知への対応を使用する方がはるかに優れています。それはより簡単でクリーンです。

于 2012-05-25T12:11:30.413 に答える
0

NSManagedObject サブクラスを使用している場合は、プロパティ ミューテーター (セッター) をオーバーライドしないでください。これらの実装は実行時に提供されるためです (したがって、@dynamic代わりに@synthesize)。本当にしたいのならできますが、それは面倒ですし、そうする理由はありません。代わりに Key Value Observing (KVO) を使用してください。値が変更されたときに通知されます。

Apple の KVO ドキュメントは素晴らしいです: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177i

于 2012-05-25T11:39:57.057 に答える