1

私はNSFetchedResultsControllerを使用して、UITableViewに表示されるオブジェクトのリストを取得します。オブジェクトの値を変更すると、全体がトリガされ、変更された行が自動的に再読み込みされます。しかし、表示される値の1つは、関連するオブジェクト(1対多の関係)から来ています。これらのオブジェクトには一時的なタイトルが付いています(別のオブジェクトから値が戻ってきます)。このタイトルが変更されると、行は再ロードされません。コアデータ/ NSFetchedResultsController - フェッチされたオブジェクトに関連する変更されたオブジェクトの登録

質問:誰かがこれにクリーンな解決策を提案できますか?

可能なダーティ・ソリューション:NSFetchedResultsControllerは変化を見ると、リロードをトリガするので、私は、「偽」setterメソッドを持つフェッチ取得クラスの過渡特性を作成することができます。しかし、それは私の意見では非常に汚いです。

ありがとうございます!

答えて

2

FRCは、特定のエンティティのオブジェクトのプロパティの変更を追跡します。したがって、関連するエンティティのオブジェクトの変更は追跡されません。しかし、FRC反応を誘発するためにKVOを使用することができます。 Employee.m

[Department].employees <->> [Employee].department 

- (void)setTitle:(NSString *)title 
{ 
    [self willChangeValueForKey:@"title"]; 
    [self setPrimitiveValue:title forKey:@"title"]; 
    [self didChangeValueForKey:@"title"]; 

    [self.department willChangeValueForKey:@"employees"]; 
    [self.department didChangeValueForKey:@"employees"]; 
} 

またはこの(しかし、それを自分自身をテストしていない)のようなもの:

- (void)didChangeValueForKey:(NSString *)key 
{ 
    [super didChangeValueForKey:key]; 

    if (self.department && [key isEqualToString:@"title"]) { 
     [self.department willChangeValueForKey:@"employees"]; 
     [self.department didChangeValueForKey:@"employees"]; 
    } 
} 
関連する問題