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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS