3

NSMutableDictionary レコードの NSMutableArrayController を使用して NSTableView にコンテンツを表示しようとしています。

私は以下に書かれた手順に従いました:

  1. アプリケーション デリゲート クラスで、「geniuses」という名前の NSMutableArray オブジェクトを作成し、いくつかの NSMutableDictionary オブジェクトをキー「geniusName」と「domain」で保存しました。

  2. IB で NSArrayController オブジェクトを取得し、そのコントローラー コンテンツ プロパティをアプリケーション デリゲート クラスにバインドし、そのモデル キー パスを「天才」に設定しました。属性インスペクタ ペインで、モードをクラスとして、クラス名を NSMutableDictionary として設定します。追加されたキー: 'geniusName' および 'domain' に。

  3. IB では、テーブル ビュー オブジェクトを使用しました。content プロパティを配列コントローラーにバインドし、コントローラーのキー パスを配置されたオブジェクトとして設定します。最初の列の値プロパティを配列コントローラーにバインドし、コントローラー キー パスを配置オブジェクトとして設定し、モデル キー パスを 'geniusName' として設定します。その 2 列目の値プロパティを配列コントローラーにバインドし、コントローラー キー パスを配置オブジェクトとして設定し、モデル キー パスを 'geniusName' として設定します。

プロジェクトをビルドして実行しようとしたときにこれらの手順を実行した後、データが入力されていないテーブル ビューが見つかりました。

誰かが私が間違っているかもしれない場所を教えてもらえますか?

ありがとう、

ミラージュ

4

2 に答える 2

1

可変配列用に宣言されたインスタンス変数があると仮定します。

NSMutableArray *myObjects;

しかし、実際に配列を作成しましたか?

変数は、配列オブジェクトへのポインターの単なるコンテナーです。init配列オブジェクトを作成し、そのポインターを変数 (おそらくアプリケーションのデリゲートまたはinitWithCoder:メソッド) に入れる必要があります。

それを忘れることは、あなたが見ている問題の一般的な原因です。配列を作成するまで、インスタンス変数には が含まれておりnil、存在しない配列に物を入れたり、そこから物を取得したりする試みはすべて へのメッセージnilであり、何もしません。

于 2010-05-12T06:36:24.520 に答える
1

現在、コードを確認できません。genuises 配列にどのように入力していますか? KVO 通知を生成するには、キー値コーディング アクセサー メソッドを実装し、配列からデータを挿入または削除するときにそれらを使用する必要があります。

于 2010-05-11T16:40:43.913 に答える