21

SO でキー値観測をNSArray(または) で使用する例を調べましたが、(私が慣れていないのとは異なりNSMutableArray) を使用する必要があるようですが、これを行う方法の具体的な例は見つかりませんでした。誰かサンプルコードで説明できますか?NSArrayControllerKVO

たとえば、プレイヤー名をofGameModelで表す があるとします。これらの文字列を観察して (View Controller がモデルのデータを観察します)、ビュー内のさまざまなものを更新したいと考えています。NSArray (playerNameArray)NSStrings

プレイヤー名の配列が変更されたという通知を受け取るにはどうすればよいですか?

EDIT:iOS SDKはサポートしていNSArrayControllerますか?そうでない場合、別の方法はありますか?

4

1 に答える 1

31

への変更を観察するために NSArrayController は必要ありませんNSArray。ただし、これらの変更を直接観察することはできません。つまり、 を-addObserver:forKeyPath:options:context:直接呼び出すことはできませんNSArray。あなたの場合、キーとしてそれを呼び出す必要がGameModelあり@"playerNameArray"ます。

あなたはまだ終わっていません。通常の自動 KVO 通知は、 を呼び出した場合にのみ開始される-setPlayerNameArray:ため、アレイ全体が置き換えられます。より詳細な通知が必要な場合は、その配列内の項目を挿入、削除、または置換するたびに-willChange:valuesAtIndexes:forKey:andを使用する必要があります。-didChange:valuesAtIndexes:forKey:

これにより、配列の内容が変更されるたびに通知が送信されます。オブザーバーを追加するときに使用するによっては、NSKeyValueObservingOptions行われた増分変更も取得できます。これは優れた機能ですが、この場合は必要ないかもしれません。

注: NSArrayController は iOS には存在しません。これは、現在 Mac OS X の AppKit にのみ存在する Cocoa Bindings の一部です。幸いなことに、これは必要ありません。

于 2010-08-13T16:59:47.093 に答える