1

私の NSManagedObject の属性の 1 つはさまざまな属性に依存しており、それらのいくつかは関連する NSManagedObject にあります。

最初の実行では、そのような属性に単純な一時属性を実装しましたが、一時プロパティでフェッチ述語を使用できないことがわかりました。

次のように属性を作成する必要があります。

  1. さまざまな属性を使用して計算されたその値
  2. 関連する NSManagedObject に依存属性の 1 つが存在する
  3. この属性を述語として使用してフェッチできます。
  4. 依存属性の 1 つを更新すると、計算値を更新する必要があります
4

1 に答える 1

0

キー値監視を使用して、変更されているプロパティを監視し、計算されたプロパティを最新の状態に保つことができます。監視するプロパティにオブザーバーを追加できます。

KVOプログラミングガイド


編集:ここを参照

これを正しく行うには、計算されたプロパティのプロパティゲッターをオーバーライドして、keyPathsFOrValuesAffecting<Key>関数を作成する必要があります。

Appleの例はかなり良いです、それはプロパティがとfullNameから集められるべきである場合を与えます。firstNamelastName

したがって、この関数を使用してKVOを実装する必要があります。

+ (NSSet *)keyPathsForValuesAffectingFullName
{
    return [NSSet setWithObjects:@"lastName", @"firstName", nil];
}

これにより、これらの値が変更されたときにアプリに通知を受け取ることができます。次に、この通知で呼び出されるゲッターをオーバーライドします

- (NSString *)fullName 
{
    return [NSString stringWithFormat:@"%@ %@",firstName, lastName];
}
于 2012-07-19T17:57:45.250 に答える