14

にキーが存在するかどうかを確認するにはどうすればよいNSDictionaryですか?

コンテンツがあるかどうかを確認する方法は知っていますが、動的であり、防止する必要があるため、そこにある場合は非常に確認したいと考えています。場合によっては、「名前」と値を持つキーを持つこともありますが、別の場合には、この値のペアが存在しないこともあります。

4

2 に答える 2

25

最も簡単な方法は次のとおりです。

[dictionary objectForKey:@"key"] != nil

nil存在しないキーに対して辞書が返されるため (したがって、辞書に nil を格納することはできません。そのため、 を使用しますNSNull)。

編集:ブラッドリーの答えにコメントする答え

さらに次のように尋ねます。

[[[contactDetailsDictionary objectForKey:@"professional"] objectForKey:@"CurrentJob"] objectForKey:@"Role"] が存在するかどうかを確認する方法はありますか? は非常に巨大な辞書であるため、単一のキーではなく、別のカテゴリに存在する可能性があります。

Objective-C では、 にメッセージを送信できますnil。これはエラーではなく を返しますnil。したがって、上記の単純なメソッドを展開して、次のように記述します。

[[[contactDetailsDictionary objectForKey:@"professional"] 
                              objectForKey:@"CurrentJob"] 
                                objectForKey:@"Role"] != nil

キーシーケンスのどの部分も存在しないかのように、LHS が返しますnil

于 2012-10-26T19:57:38.960 に答える
8

NSDictionaryすべてのキーを として返し、配列でNSArray使用します。containsObject

NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"object", @"key"];
if ([[dictionary allKeys] containsObject:@"key"]) {
  NSLog(@"'key' exists.");
}
于 2012-10-26T16:34:35.070 に答える