2010-12-06 75 views
3

我想将float值存储到NSUserDefaults中。如何在NSUserDefaults中存储浮点数

我还需要检查float值是否存在..如果我不需要在它中分配一些值。

并检索它...对于上述我有下面的代码,但它给了我一个错误。

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

感谢所有帮助

回答

12

通过setObject:forKey:方法使用NSNumber类,这和储存,所以你可以检查它是否存在。

我也建议常量的用法键:

#define HANDWRITING_SIZE_SLIDER @"HSS" 

你的代码应该是沿着这些线路:

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

别的地方在你的应用,您需要设置的值在NSUserDefaults这样的:

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

他在else部分向你展示了你。 – 2010-12-06 06:40:02

0

试试这个代码:

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

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