14

如何验证密钥是否存在于NSDictionary?

我知道如何验证它是否有一些内容,但我很想验证它是否存在,因为它是动态的,我必须阻止它。就像在某些情况下,它可能碰巧有一个带有“名称”的键并且是值,但在另一种情况下,这对值可能不存在。

4

2 回答 2

25

最简单的方法是:

[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

于 2012-10-26T19:57:38.960 回答
8

NSDictionary将所有键作为 an 返回NSArray,然后containsObject在数组上使用。

NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"object", @"key"];
if ([[dictionary allKeys] containsObject:@"key"]) {
  NSLog(@"'key' exists.");
}
于 2012-10-26T16:34:35.070 回答