17

可能重复:
如何检查 NSDictionary 或 NSMutableDictionary 是否包含密钥?

我可以从字典中获取键(字符串)的数组,然后循环遍历它,与我要检查的键进行字符串比较,看看该字典是否包含我寻找的键。

但是是否有更优雅的方式来检查字典中是否存在密钥?

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

-代码

4

3 回答 3

37

AnNSDictionary不能包含值,因此如果键不存在nil,您可以简单地使用[NSDictionary objectForKey:]which 将返回: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 回答