我想从NSDictionary获取值,但得到一个异常,即没有定义键。
NSDictionary * userNames = [[NSDictionary alloc] init];NSString * testValue = @“”;testValue = […
可能你没有声明键和值。 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"]);
的 决不 强> 使用 valueForKey 从字典中获取单个值,除非你知道什么是KVC并且你真的需要KVC。
valueForKey
字典是空的,密钥不存在而且领先 @ 在KVC中有特殊意义 valueForKey 在这种情况下崩溃。
@
适当的API是 objectForKey 但只需使用现代密钥订阅即可获得 nil 如果密钥不存在
objectForKey
nil
testValue = userNames[@"@&"];