我保存了使用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];
}
}
答案 0 :(得分:3)
if (setbatteryHealthCalculated = 0) {
埃姆。应该是
if (setbatteryHealthCalculated == 0)
比较运算符为==
,而不是{C}类语言中的=
。
无论如何,原始代码都会将setbatteryHealthCalculated
设置为0。由于0为false,因此永远不会执行if
分支,也不会显示警报。
此外,原始代码有不平衡的大括号。
setbatteryHealthCalculated
是一个伊娃?如果是,请在它之前删除NSInteger。否则你要声明一个影响ivar的局部变量。
答案 1 :(得分:2)
在您的应用启动期间调用registerDefaults:
以设置默认值的默认值(尴尬地说,但这就是它的工作原理)。您需要在访问默认值的任何代码之前调用它。但是对于不存在的密钥,NSUserDefaults确实返回0或nil。