2009/05/30

違うディクショナリ

今日は、昨日完成させたディクショナリを違う形式に改善する作業から開始した。



NSNumber *number数字 = [NSNumber numberWithInt:2];
NSNumber *startXmax数字 = [NSNumber numberWithInt:252];
NSNumber *startXmin数字 = [NSNumber numberWithInt:195];
NSNumber *startYmax数字 = [NSNumber numberWithInt:45];
NSNumber *startYmin数字 = [NSNumber numberWithInt:0];
NSMutableDictionary *dict数字 = [NSMutableDictionary dictionaryWithObjectsAndKeys:
number数字, @"number",
startXmax数字, @"startXmax",
startXmin数字, @"startXmin",
startYmax数字, @"startYmax",
startYmin数字, @"startYmin", nil];

昨日のおさらいのになるが、他にもdict3, 4, 5,,,のように辞書オブジェクトを生成し、その中に同様のキー値に対してstartXmax3, 4, 5,,,といった値を代入していく。「数字」の部分がそれぞれ変わっていく。

そこで登録した辞書を以下の方法で読み込む。
NSMutableDictionary *dicto = [roadArray objectAtIndex:index+1]; //indexの中身はランダムで生成されたint型の数
startXmax = [[dicto objectForKey:@"startXmax"] intValue];
startXmin = [[dicto objectForKey:@"startXmin"] intValue];
startYmax = [[dicto objectForKey:@"startYmax"] intValue];
startYmin = [[dicto objectForKey:@"startYmin"] intValue];

こうすることでroadArrayに含まれるindex + 1番目の辞書オブジェクトを呼び出し、startXmaxなどをキーとして値を読み出せていた。
しかし、これら辞書に登録するキー値は違うものなので異なる辞書オブジェクトを作る必要はなく、1つの辞書にまとめて代入したほうがいいと判断。
そこで、このような辞書オブジェクトを作る事にした。

NSNumber *startXmax数字 = [NSNumber numberWithInt:252];
NSNumber *startXmin数字 = [NSNumber numberWithInt:195];
NSNumber *startYmax数字 = [NSNumber numberWithInt:45]; //この処理を画像の枚数分繰り返す

dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
startXmax数字, @"startXmax数字",
startXmin数字, @"startXmin数字",
startYmax数字, @"startYmax数字", //この処理を画像の枚数分繰り返す


ここまでは難なくこなせたが、辞書を呼び出す際に問題が発生した。

NSString *imageNumber = [[NSString alloc] initWithFormat:@"road%d.jpg", index+2]; //indexにはint型の値が含まれる
[contentView setImage:[UIImage imageNamed:(imageNumber)]];

NSString *Xmax = [[NSString alloc] initWithFormat:@"startXmax%d", index+2];
NSString *Xmin = [[NSString alloc] initWithFormat:@"startXmin%d", index+2];
NSString *Ymax = [[NSString alloc] initWithFormat:@"startYmax%d", index+2];
NSString *Ymin = [[NSString alloc] initWithFormat:@"startYmin%d", index+2];

startXmax = [[dict objectForKey:Xmax] intValue];
startXmin = [[dict objectForKey:Xmin] intValue];
startYmax = [[dict objectForKey:Ymax] intValue];
startYmin = [[dict objectForKey:Ymin] intValue];

やはり青で宣言した文字列で辞書に含まれるキーを指定したのがマズかったのだろうか。。。


…………ごめんなさい。
ココは省略して次に進みたいと思います。

次はゲーム時間を計るタイマーと、メニュー画面の設置に取りかかろうと思う。

0 件のコメント:

コメントを投稿