for ループでは、
NSLog (@"%@", [[<array> objectAtIndex:i]-><specific_var>];
各インデックス位置には 2 つの変数が必要で、そのうちの 1 つにアクセスしたいと思います。どうもありがとう。
編集済み:この場合、プロパティにアクセスしようとしています
for ループでは、
NSLog (@"%@", [[<array> objectAtIndex:i]-><specific_var>];
各インデックス位置には 2 つの変数が必要で、そのうちの 1 つにアクセスしたいと思います。どうもありがとう。
編集済み:この場合、プロパティにアクセスしようとしています
一時的なローカル変数を作成する方がはるかに優れています。->
を使用せずにプロパティにアクセスし、コードをより明確にするのに役立ちます。
例えば
TheObject *object = array[i]; //same as [array objectAtIndex:i]
NSLog(@"%@", object.property);
->
Objective-C オブジェクト ( 以外)に適用するのself
は、そのオブジェクトのメソッドの外部からオブジェクトのインスタンス変数にアクセスする場合のみです。そして、私たちはそれをしたいとはほとんど思っていません。
とにかく、objectAtIndex:
メソッドの戻り値の型はid
. Anid
には public インスタンス変数はありません。
配列内のオブジェクトが特定の型であることがわかっていて、それらのオブジェクトのインスタンス変数に直接アクセスしたい場合 (これは一般的に強く嫌われています)、最初に戻り値を正しい型にキャストする必要があります。例:
NSLog(@"%@", ((MyObject *)[myArray objectAtIndex:i])->_myInstanceVariable);
id
しかし、一般的には、より具体的な型にキャストする必要がないアクセサー メソッドを使用する方がはるかに優れています。
リテラル構文を使用すると、より簡単になります。
NSLog(@"%@", [someArray[i] someGetter]);
またはそれは配列の配列ですか:
NSLog(@"%@", someArray[i][someIndex]);