コンテンツ配列がファイルの所有者(ウィンドウコントローラー)にバインドされ、モデルキーパスがchartData.eventsに設定されているNSArrayControllerがあります。chartDataはNSObjectのサブクラスであり、eventsは合成されたNSMutableArrayプロパティです。
chartDataは、NSArrayControllerがイベントオブジェクトをeventsプロパティに追加および削除するタイミングを知る必要があります。可変のインデックス付きアクセサーを実装することでこれを行うべきだと思いました。これをchartDataクラスの実装に入れました。
- (void)insertObject:(TNLEvent *)event inEventsAtIndex:(NSUInteger)index {
[self.events insertObject:event atIndex:index];
return;
}
- (void)insertEvents:(NSArray *)eventArray atIndexes:(NSIndexSet *)indexes {
[self.events insertObjects:eventArray atIndexes:indexes];
return;
}
ただし、NSArrayControllerのadd:メッセージが送信されるときは、これらのメソッドはどちらも呼び出されません。NSArrayControllerによって使用されるキーパスがこれらのメソッドにマップされていないか、キー値に準拠していないと思います。オブジェクトがいつ追加または削除されたかを知るにはどうすればよいevents
ですか?
更新:合成されたアクセサーをオーバーライドsetEvents
し、配列コントローラーが、制御する配列にオブジェクトを追加するたびにこのメソッドを使用することを発見しました。したがって、可変のインデックス付きアクセサーは使用されません。どのオブジェクトが追加されたかはまだわからないので、これは役に立ちません。