Ios NSDictionary-需要检查字典是否包含键值对
我只需要问以下问题。 假设我有一本字典Ios NSDictionary-需要检查字典是否包含键值对,ios,objective-c,nsdictionary,Ios,Objective C,Nsdictionary,我只需要问以下问题。 假设我有一本字典 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:@"xro
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"];
现在,我需要检查如下内容
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);
[xyz是否包含键“b”值??是否成对
问题是怎么做
另一个问题是如何计算总键值对
比如说
NSInteger mCount=[xyz keyCounts];
只要向它请求objectForKey:@“b”
。如果它返回nil
,则该键上没有设置任何对象
if ([xyz objectForKey:@"b"]) {
NSLog(@"There's an object set for key @\"b\"!");
} else {
NSLog(@"No object set for key @\"b\"");
}
Edit:至于您编辑的第二个问题,它只是
nsuiger mCount=[xyz count];
。这两个答案都有很好的文档记录,在类引用()中很容易找到。使用文本语法,您可以检查如下内容
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);
+1事实上,文档直截了当地说:如果键存在于字典中,且其值为0,该怎么办?我们难道不会错误地认为键根本不存在于字典中吗?@jbx72487字典必须包含对象;
objectForKey:
返回一个id
——一个指向Objective-C对象的指针。如果您是toring数字,它们必须是一个。即使NSNumber为零或为false,它仍然是一个有效指针,并且上面的代码将准确检测到存在。如果不与我一起使用,它将返回以下结果:由于未捕获的异常“NSInvalidArgumentException”终止应用程序,原因:'-[\u NSSingleObjectArrayI objectForKey:]:发送到实例0x60000133a1c0的选择器无法识别'