ROADTO みちログ

ひとのみちのブログ。大阪でiOSアプリの道を歩くフリーランス。

#defineでNSArrayやNSDictionayを定義

iPhoneアプリ「めざまし天気」を申請中でして。
その中で使ったちょっとしたTipsを書いておきます。

値を静的に定義しますよね。
#defineでこんな書き方できますというのを。

まずNSArray。

//まず地域を定義
#define AREA_HOKIDO @"北海道"
#define AREA_TOHOKU @"東北"
#define AREA_KANKOU @"関東・甲信"
#define AREA_HOKRIK @"北陸"
#define AREA_TOHKAI @"東海"
#define AREA_KINNKI @"近畿"
#define AREA_CHUGOK @"中国"
#define AREA_SHIKOK @"四国"
#define AREA_KYUSHU @"九州"
#define AREA_OKINAW @"沖縄"

//定義済みの地域をNSArrayで定義
#define AREA_ARAY @[AREANM_HOKIDO, AREANM_TOHOKU, AREANM_KANKOU, AREANM_HOKRIK, AREANM_TOHKAI, AREANM_KINNKI, AREANM_CHUGOK, AREANM_SHIKOK, AREANM_KYUSHU, AREANM_OKINAW]

//長くてヤダって時は改行文字「\」(Alt+¥)入れるとスッキリ。
#define AREA_ARAY @[\
  AREANM_HOKIDO \
, AREANM_TOHOKU \
, AREANM_KANKOU \
, AREANM_HOKRIK \
, AREANM_TOHKAI \
, AREANM_KINNKI \
, AREANM_CHUGOK \
, AREANM_SHIKOK \
, AREANM_KYUSHU \
, AREANM_OKINAW \
]

これで定義値を取得。

//取得
NSString *area = AREA_ARAY[0];

次ぎはNSDictionary。

//曜日を定義
#define WEEKDAY_SUNDAY    @"日"
#define WEEKDAY_MONDAY   @"月"
#define WEEKDAY_TUESDAY  @"火"
#define WEEKDAY_WEDNESDAY @"水"
#define WEEKDAY_THURSDAY  @"木"
#define WEEKDAY_FRIDAY    @"金"
#define WEEKDAY_SATURDAY  @"土"

//定義済みの曜日をNSDictonaryで定義 key:曜日
#define WEEKDAY_DIC @{@"1":WEEKDAY_SUNDAY,@"2":WEEKDAY_MONDAY,@"3":WEEKDAY_TUESDAY,@"4":WEEKDAY_WEDNESDAY,@"5":WEEKDAY_THURSDAY,@"6":WEEKDAY_FRIDAY,@"7":WEEKDAY_SATURDAY}

//長くてヤダって時は改行文字「\」(Alt+¥)入れるとスッキリ。
#define WEEKDAY_DIC @{  \
 @"1":WEEKDAY_SUNDAY    \
,@"2":WEEKDAY_MONDAY    \
,@"3":WEEKDAY_TUESDAY   \
,@"4":WEEKDAY_WEDNESDAY \
,@"5":WEEKDAY_THURSDAY  \
,@"6":WEEKDAY_FRIDAY    \
,@"7":WEEKDAY_SATURDAY  \
}

これで定義値を取得。

//取得
NSString *weekDay = WEEKDAY_DIC[@"1"];

応用すれば、Dictionaryの中にArrayを入れて、DIC[@"key"][0]でArrayの中身取得もできますし。
まあ、あんまりやるとわけわからなくなるなるし、DBとか他のやり方が適切になるのでほどほどにしてます。

以上、カレーうどんを飛ばさずに食べる方法の紹介でした。

自己紹介
メガネは売っていません
高浜 一道(たかはま かずみち)
大阪でiOSアプリの道を歩くフリーランス。
iPad・iPhoneとサーバを連携した、JSONやDBといったキーワードが出てくるツール系が多めです。
お仕事のご依頼やご連絡はこちらから。
お仕事ください!
Web : ROADTO
ML : k-takahama(a)roadto.jp

個人的なアカウントはこちら。
Tw : @hitonomichi
Fb : kazumichi.takahama