私はNSArrayControllerにNSTableViewをバインドする最も単純なケースを実装しようとしています。そのため、NSTableViewはNSArrayによってサポートされています。ここでNSArrayControllerに裏付けられたNSTableView:なぜsetContent:IBは動作しませんか?
はセットアップです:
- 私はその「内容のアレイ」私のアプリデリゲートにNSArrayのにバインドされているNSArrayControllerはを持っています。
- NSArrayControllerの 'Object Controller'では、クラス名はNSArrayに含まれるオブジェクトの型であるModelに設定されます。
- NSTableViewの単一列の「値」は、Modelクラスの唯一のフィールドであるアレイコントローラの「arrangedObjects」のキー「name」にバインドされています。
- 私のアプリケーションデリゲートのapplicationDidFinishLaunching:では、NSArrayを初期化し、いくつかのModelオブジェクトを挿入します。
ただし、モデルに対応する行は、私も次の場合以外は表に表示されません。[self.arrayController setContent: self.array]
。
Interface Builderでバインディングを使用してこれを動作させる方法はありますか? NSArrayControllerの 'Content Array'がNSArrayに直接バインドされているため、プログラムでコンテンツを設定する必要はありません。なぜ私が束縛をよりよく理解するのに役立つかを知ること。
ありがとうございました。私はNSArrayControllerが単純に配列を管理するのか、それとも1つのプロキシであるのかは明らかではありませんでした。あなたの答えから、それは後者のようです。 – jogloran
そのバインディングは絶対に大丈夫ですが、それは間違っていません。はい - アレイコントローラがアレイの内容を処理します。しかし、オブジェクトを保存/復元したい場合はどうすればいいですか?これは(NSUserDefaultsにバインドされていない限り)配列コントローラによって行われません。バインディングとKVOソリューションを使用しているときは、閉じるとウィンドウを閉じるとウィンドウに保存することができます。 - どのように便利です! –