17

重複の可能性:
NSDictionary または NSMutableDictionary にキーが含まれているかどうかを確認する方法は?

ディクショナリからキー (文字列) の配列を取得し、それをループして、確認したいキーと文字列を比較し、そのディクショナリに探しているキーが含まれているかどうかを確認します。

しかし、キーが辞書に存在するかどうかを確認するよりエレガントな方法はありますか?

        NSArray * keys = [taglistDict allKeys];
        for (NSString *key in keys) 
        {
           // do string compare etc
        }

-コード

4

3 に答える 3

37

に値をNSDictionary含めることはできないため、キーが存在しない場合に返される which をnil単純に使用できます。[NSDictionary objectForKey:]nil

BOOL exists = [taglistDict objectForKey:key] != nil;

編集: @OMGPOP で述べたように、これは次の構文を使用して Objective-C リテラルを使用しても機能します。

NSDictionary *dict = @{ @"key1" : @"value1", @"key2" : @"value2" };

if (dict[@"key3"])
    NSLog(@"Exists");
else
    NSLog(@"Does not exist");

版画:

Does not exist
于 2012-07-25T15:24:35.530 に答える
10

Trojanfoeの方が優れている可能性がありますが、次のこともできます。

[[taglistDict allKeys]containsObject:key]
于 2012-07-25T15:26:24.333 に答える
-2

NSStringキーがタイプで辞書であると仮定すると、keys代わりに次のようなものを使用する必要があります。

if [keys containObject:key] {
 // do something
}
于 2012-07-25T15:25:20.847 に答える