2012年2月19日日曜日

NSMutableArrayのシャッフル

Shuffle by dry3210
Shuffle, a photo by dry3210 on Flickr.

NSMutableArray 内の要素をシャッフルしたかったので、調べてみたら、まさにそれにぴったりのメソッドが用意されていました。

exchangeObjectAtIndex:withObjectAtIndex: です。

例えば以下のように使用します。
NSMutableArray *array = [NSMutableArray arrayWithObjects:objA,objB,objC,objD,nil];

for (int i=0 ; i<10 ; ++i) {
  NSUInteger idx1 = rand()%[array count];
  NSUInteger idx2 = rand()%[array count];
  if (idx1==idx2) {
    // 同じインデックスだったら片一方を変更
    ++idx2;
    if (idx2>=[array count]) {
      idx2 = 0;
    }
  }
  //2つのインデックスのオブジェクトを入れ替える
  [array exchangeObjectAtIndex:idx1 withObjectAtIndex:idx2];
}
コードはかなり簡易的に書いてますので、適当に書きなおして下さい。
NSArray は要素を変更できませんので、必ず Mutable バージョンを使用しましょう。

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...