NOOB コードから結果を取得する際の問題 (具体的には NSComboBox で)
-
27-09-2019 - |
質問
おそらく単純な質問だとは思いますが、これを理解するために私が頭を悩ませていることは次のとおりです。
私は次のことを知っています:
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index {
return [midiModelContents objectAtIndex:index];
}
指定されたインデックスにある項目を返します。私の質問は、このルーチンを呼び出すにはどのようなコードを使用する必要があるかということです。
私は次のようなことを試しました:
NSString *curData =(comboBox: midiModel objectValueForItemAtIndex:0);
しかし、「エラー:「コンボボックス」が宣言されていません」
私が台無しにしているという概念について誰かが私を助けてくれますか?
解決
まず、読んでいただきたいのは、 Objective-C プログラミング言語 自分自身を含むオブジェクトにメッセージを送信するための正しい構文を学習します。
意味のないコード (Objective-C にあるもの) を書いたため、意味のないエラー メッセージが表示されます。有効な Objective-C メッセージ式はコンパイルされて正常に実行されますが、期待どおりの動作はしないと思います。
ご覧のとおり (これが 2 番目のことです)、 comboBox:objectValueForItemAtIndex:
通常、自分自身に送るメッセージではありません。 コンボボックス あなたがそのデータソースである場合、そのメッセージをあなたに送信します。データ ソースは、デリゲート パターンのバリエーションであり、「」で詳しく説明されています。 Cocoa の基礎ガイド.
(あなた できる メッセージを自分自身に送信します。コンボ ボックスと同じオブジェクト値の取得パスを意図的に通過したい場合は、これを実行するのが理にかなっていますが、これはコンボ ボックスを機能させるために行う必要があるものではありません。 。)
Language ドキュメントと Cocoa Fundamentals ドキュメントは両方とも、すべての Cocoa プログラマーにとって必須の読書です。 Cocoa のメモリ管理ガイド. 。3 つのドキュメントをすべて最初から最後まで読む必要があります。
当面の問題の解決策は、次のように応答するオブジェクトです。 comboBox:objectValueForItemAtIndex:
コンボボックスのデータソースになります。おそらく、コンボボックスを作成したのと同じペン先の IB にこれを接続することになります。
もしどれも意味をなさないのであれば、私があなたに提案できるのは、もう一度、それらの文書を読むことだけです。彼らはすべてを説明してくれるでしょう。
本当に、コンボ ボックスと同じ方法でオブジェクトの値を自分自身に尋ねるつもりだった場合 (つまり、コンボ ボックスがすでに機能していて、別の目的で同じ方法でオブジェクトの値を取得するつもりである場合)、それでも次のことが必要です。 Objective-C プログラミング言語のドキュメントを読んで、そのメッセージを自分に送信するための正しい構文を学びます。