1

NSArrayControllerタイトルが言うように、私はの線に沿った何かのスーパーを指定したいのですがself = [super[NSArrayController] function]、これを探すことができませんでした。何か案は?前もって感謝します。

私の質問の性質に関して人々を混乱させているので、抽象的な例を削除するために編集されました。

これの目的は、NSArrayControllerからNSButtonへの「add」の単純なバインディングがIBで行うことをプログラムで実行することです。私のアプリケーションにはいくつかのarrayControllerがあるので、コードでスーパーを取得したいものを指定できるようにしたいと思います。

NSArrayControllerのスーパーを探している理由は、コントローラー(NSArrayController)ではなくモデルに対処する必要があるという印象を受けており、私のモデルは、スーパーを使用して到達できると信じているコアデータモデルであるためです。名前で指定したNSArrayControllerの おそらく、データモデルに追加するより直接的な方法があります。

4

1 に答える 1

5

あなたは間違った質問をしている。

まず、クラスとクラスのインスタンスを区別しましょう。同じクラスのインスタンスが複数存在する可能性があり、実際に存在することが多いことに注意してください。

クラスは、別のクラスのサブクラスCにすることができます。次に、のスーパークラスです。クラスのインスタンスがあるとします。次に、クラスのメソッドの実装では、はそれ自体のインスタンスを表し、のインスタンスをそのスーパークラスのインスタンスとして表します。ある意味で、クラスのインスタンスはクラスのインスタンスであります。AACcCCselfcsuperc AC A

オブジェクトは、スーパークラスまたはサブクラス以外の関係を持つことができます。たとえば、クラスのCインターフェイスにインスタンス変数を含めることができますB* b;。この場合、cクラスのインスタンスには、クラスのインスタンスへのポインタがあり C ます。この場合、はクラスのインスタンスではありませんbBcB

と管理対象オブジェクトコンテキストの関係NSArrayControllerは、後者の1つです。のインスタンスには、 (moc)NSArrayControllerのインスタンスへのポインタが含まれています。NSManagedObjectContext

だからあなたがしたいのsuperはあなたのを取得しないことですNSArrayController。代わりに、に関連付けられたmocを取得する必要がありNSArrayControllerます。さて、どうやってそれを手に入れますか?それを見つけるには、XCodeまたはWebのAppleDeveloperConnectionでリファレンスを開きます。こちらを参照してください。今それをしなさい。メソッドを実行します。あなたはあなたにモックを与えるものを見つけません。

次に、そのページの上部に移動し、のスーパークラスに従いますNSArrayControllerのこのリファレンスをNSObjectController参照してください。次に、メソッドのリストを確認します。-[NSObjectController managedObjectContext]あなたは、仕事をする、を見つけます!

結論:モックをに関連付けたい場合はNSArrayController、次のことを行う必要があります

NSManagedObjectContext* moc= [arrayController managedObjectContext];

処理したいarrayControllerインスタンスはどこにありますか。たとえば、nibにsのNSArrayControllerインスタンスが複数ある場合は、アプリデリゲートに複数のsを含める必要があります。たとえば、、など(これは非常に悪い変数名です)。次に、処理したいものを選択します。NSArrayControllerIBOutletarrayController1arrayController2

于 2011-02-19T14:32:17.333 に答える