我该如何验证一个NSDictionary
中是否存在一个键?
我知道如何验证它是否有一些内容,但我想要验证它是否存在,因为它是动态的,我必须防止它。例如,在某些情况下,可能会有一个带有“name”和其值的键,而在另一些情况下,可能会发生这种值对不存在的情况。
我该如何验证一个NSDictionary
中是否存在一个键?
我知道如何验证它是否有一些内容,但我想要验证它是否存在,因为它是动态的,我必须防止它。例如,在某些情况下,可能会有一个带有“name”和其值的键,而在另一些情况下,可能会发生这种值对不存在的情况。
最简单的方法是:
[dictionary objectForKey:@"key"] != nil
由于字典在返回不存在的键时会返回 nil
(因此您不能在字典中存储 nil
,要使用 NSNull
),
编辑:回复 Bradley 的评论
您进一步询问:
有没有办法验证这个存在:[[[contactDetailsDictionary objectForKey:@"professional"] objectForKey:@"CurrentJob"] objectForKey:@"Role"]?不是单个键,因为它是一个非常庞大的字典,所以它可能存在于另一个类别中。
在 Objective-C 中,您可以向 nil
发送消息,这不是错误并返回 nil
。因此,扩展以上简单方法,您只需编写:
[[[contactDetailsDictionary objectForKey:@"professional"]
objectForKey:@"CurrentJob"]
objectForKey:@"Role"] != nil
如果密钥序列的任何部分不存在,则左侧将返回nil
NSDictionary
将所有的键作为NSArray
返回,然后在该数组上使用containsObject
方法。
NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"object", @"key"];
if ([[dictionary allKeys] containsObject:@"key"]) {
NSLog(@"'key' exists.");
}
NSDictionary
的方法调用替换 dictionary
。 - Bradley M Handy
[contactDetailsDictionary valueForKeyPath:@"professional.CurrentJob.Role"]
。 - Ken ThomasesobjectForKey
而不是objectForkey
。 - jamix