如何在NSUserDefaults中存储浮动

时间:2010-12-06 05:57:48

标签: iphone objective-c ios iphone-sdk-3.0 nsuserdefaults

我想将float值存储到NSUserDefaults

我还需要检查浮点值是否存在..如果我不需要在其中指定一些值。

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

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

感谢您的帮助

2 个答案:

答案 0 :(得分:12)

使用NSNumber类并通过setObject:forKey:方法存储它,以便检查它是否存在。

我还建议使用常量作为键:

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

答案 1 :(得分:0)

试试这段代码:

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

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