美文网首页
NSUserDefaults默认值设置方法

NSUserDefaults默认值设置方法

作者: loghm | 来源:发表于2017-04-13 01:23 被阅读255次

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

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

    首先,在APPdelegate中声明该NSUserDefaults属性,以前我使用的是
    <pre> if(![[NSUserDefaults standardUserDefaults] boolForKey:@"Remind"]){
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Remind"];
    }
    </pre>

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

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

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

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

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

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

    相关文章

      网友评论

          本文标题:NSUserDefaults默认值设置方法

          本文链接:https://www.haomeiwen.com/subject/qubvattx.html