告诉程序当找不到保存数据时该怎么办NSUserDefaults,iPhone

时间:2010-04-01 20:45:04

标签: iphone objective-c load save nsuserdefaults

我保存了使用NSUserDefaults保存的数据。我的印象是,如果没有任何东西保存到密钥(第一次运行应用程序),它将默认为0.但这似乎并非如此。

这就是我所拥有的:

保存:

- (void)viewWillDisappear:(BOOL)animated
{
[[NSUserDefaults standardUserDefaults] setInteger:setbatteryHealthCalculated     forKey:@"healthValue"];

    [[NSUserDefaults standardUserDefaults] synchronize];

}

加载:

- (void) viewWillAppear:(BOOL)animated
{
NSInteger setbatteryHealthCalculated = [[NSUserDefaults standardUserDefaults]     integerForKey:@"healthValue"];
}

检查保存值:

- (IBAction)check{

    NSInteger setbatteryHealthCalculated = [[NSUserDefaults standardUserDefaults] integerForKey:@"healthValue"];


    if  (setbatteryHealthCalculated = 0) {

                [self performSelector:@selector(displayAlert) withObject:nil];

}
}

2 个答案:

答案 0 :(得分:3)

if  (setbatteryHealthCalculated = 0) {

埃姆。应该是

if  (setbatteryHealthCalculated == 0)

比较运算符为==,而不是{C}类语言中的=

无论如何,原始代码都会将setbatteryHealthCalculated设置为0。由于0为false,因此永远不会执行if分支,也不会显示警报。

此外,原始代码有不平衡的大括号。


顺便说一句,setbatteryHealthCalculated是一个伊娃?如果是,请在它之前删除NSInteger。否则你要声明一个影响ivar的局部变量。

答案 1 :(得分:2)

在您的应用启动期间调用registerDefaults:以设置默认值的默认值(尴尬地说,但这就是它的工作原理)。您需要在访问默认值的任何代码之前调用它。但是对于不存在的密钥,NSUserDefaults确实返回0或nil。