NSDictionary - 需要检查字典是否包含键值对

问题描述 投票:91回答:2

我只想问下面的事情。假设我有一本字典。

NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];
[xyz setValue:@"sagar" forKey:@"s"];
[xyz setValue:@"amit" forKey:@"a"];
[xyz setValue:@"nirav" forKey:@"n"];
[xyz setValue:@"abhishek" forKey:@"a"];
[xyz setValue:@"xrox" forKey:@"x"];

现在,我需要检查如下

[xyz确实包含键“b”值?对还是不对?

问题是如何?

另一个问题是如何计算总键值对?

比如说NSInteger mCount=[xyz keyCounts];

ios objective-c nsdictionary
2个回答
183
投票

只要问它objectForKey:@"b"。如果它返回nil,则不会在该键处设置任何对象。

if ([xyz objectForKey:@"b"]) {
    NSLog(@"There's an object set for key @\"b\"!");
} else {
    NSLog(@"No object set for key @\"b\"");
}

编辑:关于你编辑的第二个问题,它只是NSUInteger mCount = [xyz count];。这两个答案都很好地记录在NSDictionary类参考文献中([1] [2])。


1
投票

使用文字语法,您可以检查如下

static const NSString* kKeyToCheck = @"yourKey"
if (xyz[kKeyToCheck])
  NSLog(@"Key: %@, has Value: %@", kKeyToCheck, xyz[kKeyToCheck]);
else
 NSLog(@"Key pair do not exits for key: %@", kKeyToCheck); 
© www.soinside.com 2019 - 2024. All rights reserved.