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

Sag*_*ari 92 objective-c nsdictionary ios

我只需要问一下如下.假设我有一本字典.

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"];
Run Code Online (Sandbox Code Playgroud)

现在,我需要检查如下

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

问题是如何?

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

比如说 NSInteger mCount=[xyz keyCounts];

Mat*_* B. 187

只要问它objectForKey:@"b".如果返回nil,则不在该键上设置对象.

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

编辑:关于你编辑的第二个问题,它很简单NSUInteger mCount = [xyz count];.这两个答案都很好地记录在NSDictionary类引用中([1] [2]).

  • @ jbx72487字典必须包含对象; `objectForKey:`返回一个`id` - 一个指向Objective-C对象的指针.如果你要存储数字,它们必须[[盒装"](http://clang.llvm.org/docs/ObjectiveCLiterals.html)到[NSNumber](https://developer.apple.com/library/ios /#documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html).即使NSNumber为零或假,它仍然是一个有效的指针,上面的代码将准确地检测存在. (12认同)
  • 如果密钥出现在字典中并且其值为0,该怎么办?难道我们不会错误地认为字典中根本没有关键字吗? (5认同)