for(int i = 0;i < [《NSArray*》 count];i++){これでもいいのですが、しかしNSArrayからオブジェクトを取り出すあたりの処理をプログラマが自分で定義しなければならない、というのはどうなんでしょう。それに、プログラマのやり方がまずければ、全部の要素をきちんと取り出せないケースも出てくるかも知れません。もっとシンプルに、全要素を扱うための方法があってもよさそうな気がしませんか。
id 変数 = [《NSArray*》 objectAtIndex:i];
……変数を操作する処理……
}
for ( 変数 in 《NSArray*》){forの後の()内に、NSArrayと、取り出したオブジェクトを保管する変数(id型などがいいでしょう)を用意します。これで、繰り返すごとにNSArrayから順にオブジェクトを取り出しては変数に設定していきます。構文として用意されているため、これを利用すれば必ずすべての要素を取り出すことが保証されます。
……変数に取り出したオブジェクトの処理……
}
NSEnumerator* 変数 = [《NSArray*》 objectEnumerator];objectEnumeratorはそのままの並び順でオブジェクトを取り出すためのインスタンスを取得します。reverseObjectEnumeratorは、逆順に取り出すためのインスタンスを取得します。――こうして取り出したNSEnumeratorでは、「nextObject」というものを使って順にオブジェクトを取り出していくことができます。
NSEnumerator* 変数 = [《NSArray*》 reverseObjectEnumerator];
while (変数 = [《NSEnumerator*》 nextObject]) {こんな具合にすれば、NSEnumeratorから順にオブジェクトを変数に取り出すことができます。そしてすべての要素を取り出したらそのまま繰り返しを抜けてくれます。
……変数を操作する処理……
}
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { NSMutableArray* arr = [NSMutableArray arrayWithObjects:@"Hello",@"Welcome",@"Bye",nil]; for(id obj in arr){ NSLog(@"%@",obj); } NSEnumerator* enm = [arr reverseObjectEnumerator]; id obj; while (obj = [enm nextObject]) { NSLog(@"%@",obj); } } return 0; }
<< 前へ |