頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


構造体を配列に入れる方法

今作っている時計アプリで時計の情報を構造体として持っているんだけどさ、それを配列に入れる方法を調べたってお話だよ。

時計の情報をこんな感じで定義してるんだ。
typedef struct {
    int level;
    int hour;
    int minute;
} ClockInfo;
メソッド呼び出し時に引数として使う時に
ClockInfo clockInfo;
clockInfo.level = level;
clockInfo.hour = hour;
clockInfo.minute = minute;
[clockView drawFor:clockInfo];
ってな感じでまとめられるので便利なんだけど、これを配列に入れたくなったんだよね。
NSMutableArrayなんかの配列には整数そのままだと入れられないとかあるじゃない、あんな感じで一工夫必要みたいなんだよ。

調べてみたら、ずばりそのまま
構造体を NSDictionary や NSArray に格納する方法 - Over&Out その後
なんてのがあったよ、ありがたいね。
記事中はNSDictionaryなんだけど、配列に突っ込む場合はこんな感じ、といっても同じだけどさ。
ClockInfo clockInfo;
clockInfo.level = currentLevel;
clockInfo.hour = currentHour;
clockInfo.minute = currentMinute;
NSValue *value = [NSValue value:&clockInfo withObjCType:@encode(ClockInfo)];
[array addObject:value];
もちろんここではarrayはNSMutableArrayクラスのオブジェクトだよ。

配列から取り出して使う時は下のような形で。
NSValue *value = [array objectAtIndex:i];
ClockInfo clockInfo;
[value getValue:&clockInfo];
しっくりこないけど、これでいけるんだよね。

<< "時計の針を進める"は英語では?   TopPage  日本酒アプリ「日本酒の基」がいい! >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/600-b805defc




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad