- 追加された行はこの色です。
- 削除された行はこの色です。
&tag(NSDictionary);
*目次 [#pae9bb45]
#contents
*参考情報 [#kc361af1]
*Tips [#g4e24355]
**valueForKeyではなくobjectForKeyを使う [#ic4f59f7]
-[[NSDictionary の objectForKey: と valueForKey: の違い - 24/7 twenty-four seven:http://d.hatena.ne.jp/KishikawaKatsumi/20100319/1268946432]]にあるように、valueForKeyは@の時の挙動がかわってくるので、普通の辞書として使いたい場合はobjectForKeyを使うほうがよい。
**nilの扱い [#b7f95f22]
-valueにnilは保存できないのでかわりに[NSNull null]を入れるしかない。ちなみにNSArrayにもnilが保存できない。
-[NSNull null]がnilがわりにはいっているときのエンプティの確認方法。[[objective c - TouchJSON, dealing with NSNull - Stack Overflow:http://stackoverflow.com/questions/5716942/touchjson-dealing-with-nsnull]]にあるようにカテゴリでも追加してやるのが簡単かも。
#pre{{
- (id)objectForKeyNotNull:(id)key {
id object = [self objectForKey:key];
if (object == [NSNull null])
return nil;
return object;
}
}}
**キーが存在するかどうかのチェック [#r30ecaf7]
-allKeysで全てのキーを取得してチェックする。
#pre{{
if ([[dictionary allKeys] containsObject:key) {
//キーが存在
}
}}
-もしくはキーに対するvalueを取得。キーが存在しない場合nilが返ってくる(キーがそんざいしてかつ値がnilというのはありえない←nilが保存できないので)。
#pre{{
id value = [dictionary objectForKey:key];
if (value != nil) {
//キーが存在
}
}}