如何在NSUserDefaults中存储浮动

use*_*878 3 iphone objective-c nsuserdefaults iphone-sdk-3.0 ios

我想存储一个floatNSUserDefaults.

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

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

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"]];      
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

Jac*_*kin 12

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

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

#define HANDWRITING_SIZE_SLIDER @"HSS"
Run Code Online (Sandbox Code Playgroud)

你的代码应该是这样的:

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];
}
Run Code Online (Sandbox Code Playgroud)

您应用中的其他位置,您可以NSUserDefaults像这样设置值:

float sizeSliderValue = ...
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:sizeSliderValue] forKey:HANDWRITING_SIZE_SLIDER];
Run Code Online (Sandbox Code Playgroud)