如何验证NSDictionary
上是否存在密钥?
我知道如何验证它是否有某些内容,但是如果它存在的话我想要非常好,因为它是动态的,我必须阻止它。就像在某些情况下,它可能碰巧有一个带有“名称”的键并且是值,但在另一种情况下,可能会发生这对值不存在。
答案 0 :(得分:20)
最简单的方法是:
[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
答案 1 :(得分:7)
NSDictionary
将所有密钥作为NSArray
返回,然后在阵列上使用containsObject
。
NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"object", @"key"];
if ([[dictionary allKeys] containsObject:@"key"]) {
NSLog(@"'key' exists.");
}