2010-12-06 35 views
3

Je souhaite stocker une valeur float dans NSUserDefaults.Comment stocker un flottant dans NSUserDefaults

Je dois également vérifier que la valeur float existe ... si je n'ai pas besoin d'y affecter une valeur. Et le récupérer ... pour ce qui précède, j'ai le code ci-dessous, mais il me donne une erreur.

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"]];  
} 

Merci pour toute aide

Répondre

12

Utilisez le pour cela et stocker la classe NSNumber via la méthode setObject:forKey: de sorte que vous pouvez vérifier si elle existe.

Je suggère également l'utilisation des constantes comme clés:

#define HANDWRITING_SIZE_SLIDER @"HSS" 

Votre code devrait être le long de ces lignes:

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]; 
} 

Quelque part d'autre dans votre application, vous souhaitez définir la valeur dans NSUserDefaults comme ceci:

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

Il vous a montré dans la section else. –

0

Essayez ce code:

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

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