_data = [NSMutableArray new];
NSNumber *value1 = [NSNumber numberWithFloat: 5.0f];
[_data setValue:value1 forKey:@"foothold"];
NSNumber *value2 = [_data valueForKey:@"foothold"];
NSLog(@"a foothold %f ",[value2 floatValue]);//error here
很奇怪,但我没有看到我的错误......
答案 0 :(得分:3)
当您收到“无法识别的选择器发送到实例”错误时,您将获得您尝试调用的方法的名称(在本例中为floatValue
)以及您的对象类型在这里调用它(NSArray
。)
因此,在这种情况下,尽管value2
被声明为NSNumber
,但[_data valueForKey:@"foothold"];
返回的值为NSArray
,但不响应{{1}选择器。
我很惊讶你没有得到其他警告。鉴于语法,看起来您应该使用floatValue
而不是数组。在这种情况下,试试这个:
NSMutableDictionary
答案 1 :(得分:3)
你有一些问题。
_data
错误地是NSMutableArray
而不是NSMutableDictionary
。setValue:forKey:
和valueForKey:
,除非您的意思是做KVC。更新的代码:
_data = [NSMutableDictionary dictionary];
NSNumber *value1 = @5.0;
_data[@"foothold"] = value1;
NSNumber *value2 = _data[@"foothold"];
NSLog(@"a foothold %f ",[value2 floatValue]);