NSUserDefaults默认值设置方法

今天在项目中使用NSUserDefaults存储一个是否提示更新版本的变量,居然花了挺多时间的,猛然才发现一个NSUserDefaults也有这么多名堂,花点时间记录下来。

我的需求是,需要存储一个是否提示更新版本的变量,这个变量默认值是YES,我需要在弹框的“不再提示”按钮事件中,将它变成NO,达到效果。

首先,在APPdelegate中声明该NSUserDefaults属性,以前我使用的是

 if(![[NSUserDefaults standardUserDefaults] boolForKey:@"Remind"]){
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Remind"];
}

但是这里有个问题,当我这样子设置时,我的默认值确实是YES,但是后续我没有办法改变他的值,当我在其他函数中将它变成NO时,我在这里的代码判断中:![[NSUserDefaults standardUserDefaults] 就是为YES,所以每次进入AppDelegate中,都会将这个值设置成YES.

经过搜索和理解,我发现NSUserDefaults有一个设置默认值的方法(汗,现在才发现),就是:registerDefaults: 所以代码改为

NSDictionary *defaultValues = [NSDictionary dictionaryWithObjectsAndKeys:@YES, @"Remind",nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];

这样,因为使用的NSDictionary作为参数,传入的是对象,所以之后的设置值有一些变化,取值没有变化


//设置值
[_Defaults setValue:@NO forKey:@"Remind"];
[_Defaults synchronize];
//取值
[_Defaults boolForKey:@"Remind"]);

参考博客:http://blog.csdn.net/wide288/article/details/17551665

你可能感兴趣的:(NSUserDefaults默认值设置方法)