2

私の問題は、さまざまな数の NSDictionary を保持する NSMutableArray を更新することにあります。各 NSDictionary には、ユーザーがテーブル ビューで選択したレコードに応じて、データベースから取得される 6 つのキーがあります。配列は、ユーザーが辞書を選択して内容を表示できるようにする NSArrayController にリンクされています。

辞書の数[カウント] が変化すると、arrayController はビューを更新します。問題なし。ただし、テーブル ビュー内の選択の間で辞書の数が同じである場合、arrayController はビューを更新しませんが、モデルは更新します。

arrayController は、テーブル ビューで選択が変更されるたびに更新されるモデル配列に IB でバインドされます。

使用:

[self.selectedJobNotes addObject:[self.jobNotes objectAtIndex:i]];

これは KVC に準拠していません。

ただし、次を使用します(KVC準拠であると私は信じています):

[[self.selectedJobNotes objectAtIndex:noteCount] setValue:[[self.jobNotes objectAtIndex:i]valueForKey:@“Content"] forKeyPath:@"Content"];

どちらも機能しません。

ArrayController に、これが新しい配列である/新しいコンテンツがあることを伝える方法はありますか?リロードしてください。

[self.jobNotesArrayController fetch:self.a2gDataObject.selectedJobNotes];

どちらも機能していないようです??!

4

1 に答える 1

1

これを解決する最善の方法は、インデックス付きアクセサーを実装 (および使用) することです。あなたの場合、彼らは次のようになります

- (void)insertObject:(NSDictionary *)dict inSelectedJobNotesAtIndex:(NSUInteger) index {
    [self.selectedJobNotes addObject:[self.jobNotes objectAtIndex:index]];
}


- (void)insertSelectedJobNotes:(NSArray *)notesArray atIndexes:(NSIndexSet *)indexSet {
    [self.selectedJobNotes insertObjects:notesArray atIndexes:indexSet];
}

KVC Programming Guide: Mutable Indexed AccessorsおよびEnsuring KVC Complianceを参照してください。

更新を でラップすることもできますがwillChange/didChange ValueForKey:、インデックス付きアクセサーを実装すると、完全に解決されます。

于 2013-03-24T03:42:32.737 に答える