0

我保存了使用 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];

}
}
4

2 回答 2

3
if  (setbatteryHealthCalculated = 0) {

嗯。应该

if  (setbatteryHealthCalculated == 0)

比较运算符==不是=在类 C 语言中。

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

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


顺便说一句,是setbatteryHealthCalculatedivar 吗?如果是,请删除它之前的 NSInteger。否则,您将声明一个隐藏 ivar 的局部变量。

于 2010-04-01T20:49:18.623 回答
2

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

于 2010-04-01T20:50:40.800 回答