&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) { //キーが存在 } }}