アーカイブ : 2011年 8月 30日

NSDictionary使ってみた(今更)

今更ながらNSDictionary使ってみました。

Javaで言うHashMapと同じですな。

キーに対するオブジェクトを保持しておくもの。

配列はインデックスで管理しますが、

これはキーで中身を管理します。

まずは色の名前と色(UIColor)を作成。

NSDictionary *dictColors;

// 色のマップ作成

dictColors = [NSDictionary dictionaryWithObjectsAndKeys:

[UIColor redColor], @"あか",

[UIColor blueColor], @"あお",

[UIColor whiteColor], @"しろ",

[UIColor yellowColor], @"きいろ",

[UIColor colorWithRed:0.0 green:0.8 blue:0.0 alpha:1.0], @"みどり",

[UIColor blackColor], @"くろ",

[UIColor purpleColor], @"むらさき",

[UIColor brownColor], @"ちゃいろ",

[UIColor orangeColor], @"オレンジ",

[UIColor colorWithRed:0.55 green:0.7 blue:1.0 alpha:1.0], @"みずいろ",

[UIColor colorWithRed:1.0 green:0.4 blue:0.6 alpha:1.0], @"ピンク",

[UIColor colorWithRed:0.5 green:1.0 blue:0.5 alpha:1.0], @"きみどり", nil];

次にキー一覧を取得して並び替えると言う処理を行う事に。

NSArrayに取得するのだが、こいつは完全に固定されて弄れないので、

NSMutableArrayへ一旦入れてからの処理になります。

// 色情報のキー取得

NSArray *arry = (NSMutableArray *)[dictColors allKeys];

NSMutableArray *arrayMut = [NSMutableArray arrayWithArray:arry];

// キーの並び替え

for (int i=0; i<100; i++) {

int src = random()%12;

int dst = src;

while (dst == src) {

dst = random()%12;

}

[arrayMut exchangeObjectAtIndex:src withObjectAtIndex:dst];

}

これでなんとかうまく色をランダムに利用できるようになりました。

並び替え処理はへたれ処理なので気にしないでください^^;

キーからデータの取り出しは

UIColor colorTemp = [dictColors objectForKey:[arrayMut objectAtIndex:0]];

誰でもわかるような内容ですね^^;