寻找一种优雅的方法来检查字典中是不是存在密钥[重复]

Posted

技术标签:

【中文标题】寻找一种优雅的方法来检查字典中是不是存在密钥[重复]【英文标题】:Looking for an elgant way to check if a Key exsists in a dictionary [duplicate]寻找一种优雅的方法来检查字典中是否存在密钥[重复] 【发布时间】:2012-07-25 15:22:05 【问题描述】:

可能重复:How to check if an NSDictionary or NSMutableDictionary contains a key?

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

但是有没有更优雅的方法来检查字典中是否存在键?

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

-代码

【问题讨论】:

2014 答案:***.com/a/22001925/294884 【参考方案1】:

NSDictionary 不能包含 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

【讨论】:

现代 objc 怎么样?如果我使用 dict[@"key"] 它会崩溃 @OMGPOP 它对我有用。 这对我不起作用。给出错误。 添加了关于 'an NSDictionary cannot contain nil values' 的信息:如果你想要一个带有 'nothing' 作为值的键,只需放置对象 [NSNULL null]。【参考方案2】:

***foe 可能更好,但您也可以这样做:

[[taglistDict allKeys]containsObject:key]

【讨论】:

【参考方案3】:

假设密钥的类型为 NSString 并且 keys 是字典,那么您应该改用以下内容:

if [keys containObject:key] 
 // do something

【讨论】:

以上是关于寻找一种优雅的方法来检查字典中是不是存在密钥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果字典键不可用,则返回 None

检查Bash数组中是不是存在元素[重复]

Python:检查范围内是不是存在对象[重复]

Python检查字典中是不是存在值[重复]

字典说密钥不存在

HTML5 LocalStorage:检查密钥是不是存在[重复]