如何在NSUserDefaults中存储浮点数

3

我想将一个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个回答

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

0

尝试这段代码:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接