Ios 从NSDictionary获取值时出错
我试图从NSDictionary中获取值,但得到一个异常,即没有定义键Ios 从NSDictionary获取值时出错,ios,objective-c,Ios,Objective C,我试图从NSDictionary中获取值,但得到一个异常,即没有定义键 NSDictionary *userNames=[[NSDictionary alloc] init]; NSString * testValue = @""; testValue = [userNames valueForKey:@"@&"];//crashing here when key is @& 由于未捕获异常“NSUnknownKeyException”而终止应用程序, 原因:'[valueF
NSDictionary *userNames=[[NSDictionary alloc] init];
NSString * testValue = @"";
testValue = [userNames valueForKey:@"@&"];//crashing here when key is @&
由于未捕获异常“NSUnknownKeyException”而终止应用程序,
原因:'[valueForUndefinedKey:]
除非您知道什么是KVC并且确实需要KVC,否则不要使用valueForKey从字典中获取单个值
字典为空,键不存在,并且前导的@在KVC中具有特殊含义,因此在本例中valueForKey崩溃
正确的API是objectForKey,但如果密钥不存在,只需使用现代密钥订阅就可以获得至少为零的API
testValue = userNames[@"@&"];
如果键不以“@”开头,则调用objectforKey:。如果键以“@”开头,则去掉“@”并用键的其余部分调用[super valueForKey:]
你可以
testValue=[userNames objectForKey:@&]
或
testValue=[userNames valueForKey:@&]您可能没有声明键和值。NSDictionary要求您使用值和键初始化。是从文件中获取它们,还是在初始化时声明它们
NSDictionary * userNames = [[NSDictionary alloc] initWithObjectsAndKeys:
@"value1", @"key1",
@"value2", @"key2",
nil];
NSString * testValue = [userNames valueForKey:@"key2"];
NSLog(@"%@", testValue);
还要注意的是,值是在之前写入的,然后定义键。参考这个
如果要像在问题中一样首先声明字典,然后向字典中添加值和键,则必须使用NSMutableDictionary
NSMutableDictionary *userNames1 = [[NSMutableDictionary alloc] init];
[userNames1 setValue:@"firstValue" forKey:@"key1"];
[userNames1 setValue:@"secondValue" forKey:@"key2"];
NSLog(@"%@", [userNames1 valueForKey:@"key2"]);
您的问题不清楚您必须提供完整的NSD声明。一个建议是使用NSDictionary*usernames=@{……},其中,@在“{@Anbu.Karthik”之前缺失。我更新了这个问题,你能检查一下吗?请参阅以下帮助: