2010-12-06 7 views
3

Ich möchte einen float Wert in NSUserDefaults speichern.So speichern Sie einen Float in NSUserDefaults

Ich muss auch überprüfen, dass der Float-Wert existiert..wenn ich nicht etwas Wert darin zuweisen muss.

und es abrufen ... für die oben genannten habe ich den folgenden Code, aber es gibt mir einen Fehler.

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

if ([defaults boolForKey:@"HANDWRITING_SIZE_SLIDER"] == YES) { 
    self.sizeSlider.value = 10.0; 
} else { 
    self.sizeSlider.value = [[NSUserDefaults standardUserDefaults] floatForKey:@"HANDWRITING_SIZE_SLIDER"]];  
} 

Vielen Dank für jede Hilfe

Antwort

12

Verwenden Sie die NSNumber Klasse für diese und speichert sie über die setObject:forKey: Methode so können Sie prüfen, ob es existiert. Entlang dieser Linien

#define HANDWRITING_SIZE_SLIDER @"HSS" 

Code sollte:

Ich würde auch die Verwendung von Konstanten als Schlüssel vorschlagen

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

if ([defaults objectForKey:HANDWRITING_SIZE_SLIDER] == nil) { 
    //doesn't exist in NSUserDefaults, set to default value... 
    self.sizeSlider.value = 10.0; 
} else { 
    self.sizeSlider.value = [[defaults objectForKey:HANDWRITING_SIZE_SLIDER] floatValue]; 
} 

Irgendwo anders in Ihrer Anwendung, können Sie den Wert gesetzt würde in NSUserDefaults wie folgt aus:

float sizeSliderValue = ... 
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:sizeSliderValue] forKey:HANDWRITING_SIZE_SLIDER]; 
+0

Er zeigte Sie im else Abschnitt. –

0

Versuchen Sie diesen Code:

-(IBAction)sliderAction:(id)sender 
{ 
    float sliderValue = [sender floatValue]; 
    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:sliderValue] forKey:@"keySliderValue"]; 

    NSLog(@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"keySliderValue"]); 
}