Question

Trying to save the position of a Slider:

saving my slider value with NSUserDefaults:

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

in my ViewdidLoad method:

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

under my setValue method I receive the error: sending NSNumber *_ strong to parameter of incompatible type of float. Any help would be much appreciated.

Était-ce utile?

La solution

The line:

[slider setValue:sliderValue];

needs to be:

[slider setValue:[sliderValue floatValue]];

The value property of slider is of type float. You can't simply pass an NSNumber reference.

BTW - NSUserDefaults has direct support for float values:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setFloat:slider.value forKey:@"slider"];

slider.value = [defaults floatForKey:@"slider"];

Autres conseils

In viewDidLoad,

Instead of :

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

write:

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

setValue takes float as parameter, while you are providing it NSNumber, so it is raising error.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top