将NSNumber * _ strong发送到不兼容类型的float的参数

时间:2013-08-21 03:58:49

标签: iphone ios objective-c nsuserdefaults viewdidload

尝试保存滑块的位置:

使用NSUserDefaults保存我的滑块值:

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[NSNumber numberWithFloat:slider.value] forKey:@"slider"];

在我的ViewdidLoad方法中:

 NSNumber *sliderValue =   [defaults objectForKey:@"Slider"];
[slider setValue:sliderValue];

在我的setValue方法下,我收到错误:将NSNumber * _ strong发送到不兼容类型的float参数。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

该行:

[slider setValue:sliderValue];

需要:

[slider setValue:[sliderValue floatValue]];

value的{​​{1}}属性属于slider类型。您不能简单地传递float参考。

BTW - NSNumber直接支持NSUserDefaults值:

float

答案 1 :(得分:0)

在viewDidLoad中,

而不是:

NSNumber *sliderValue =   [defaults objectForKey:@"Slider"];

写:

float sliderValue = [[defaults objectForKey:@"Slider"] floatValue];

setValuefloat作为参数,而您提供的内容为NSNumber,因此会引发错误。