Tell The Program What To Do When No Save Data Is Found NSUserDefaults, iPhone

元气小坏坏 提交于 2019-12-19 11:52:14

问题


I have saved data which was saved using NSUserDefaults. I was under the impression that if there was nothing saved to the key already (first time app is run) it would default to 0. This however doesn't seem to be the case.

Here is what I have:

To save:

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

    [[NSUserDefaults standardUserDefaults] synchronize];

}

To load:

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

To check for save value:

- (IBAction)check{

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


    if  (setbatteryHealthCalculated = 0) {

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

}
}

回答1:


if  (setbatteryHealthCalculated = 0) {

Ehm. Should be

if  (setbatteryHealthCalculated == 0)

The comparison operator is == instead of = in C-like languages.

The original code will set setbatteryHealthCalculated to 0 no matter what. Since 0 is false, the if branch will never be executed and no alerts would be shown.

Also, the original code has unbalanced braces.


BTW, is setbatteryHealthCalculated an ivar? If yes, remove the NSInteger before it. Otherwise you're declaring a local variable which shadows the ivar.




回答2:


Call registerDefaults: during your app's launch to set default values for your defaults (awkward to say, but that's how it work). You'll need to call it before any of the code that accesses your defaults. But NSUserDefaults does return 0 or nil for keys that don't exist.



来源:https://stackoverflow.com/questions/2563553/tell-the-program-what-to-do-when-no-save-data-is-found-nsuserdefaults-iphone

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!