zoukankan      html  css  js  c++  java
  • NSUserDefaults之registerDefaults

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

        NSString *stringValue = [userDefaults objectForKey:@"Key"];

            NSLog(@"stringValue = %@",stringValue);

        在这里stringValue的值为nil,一般地我们都是通过 isEqualToString来判断当前的值是否满足条件,也可以更严格的判断是否为nil来确定@"Key"是否注册.

        BOOL boolValue = [userDefaults objectForKey:@"Key"];

        NSLog(@"boolValue = %i",boolValue);

        在bool下当没有注册@"Key"时得到的为NO,这样是有风险的.所以当判断value前还需要判断key的registerDefault.

        - (void)registerDefaults:(NSDictionary<NSString *, id> *)registrationDictionary;

        API给到的注释为

        /*!

         -registerDefaults: adds the registrationDictionary to the last item in every search list. This means that after NSUserDefaults has looked for a value in every other valid location, it will look in registered defaults, making them useful as a "fallback" value. Registered defaults are never stored between runs of an application, and are visible only to the application that registers them.

         

         Default values from Defaults Configuration Files will automatically be registered.

         */

        从上面的解释可以知道使用该方法时,会在UserDefault中查找已经注册的Key,如果存在当前的Key则返回不再注册.

        下面举一个例子:在didFinishLaunchingWithOptions中

        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

        [userDefaults registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:@"register",@"Test", nil]];

        NSLog(@"userID = %@",[userDefaults objectForKey:@"Test"]);

        在VC的viewDidLoad中

        NSUserDefaults *user = [NSUserDefaults standardUserDefaults];

        [user setBool:YES forKey:@"Test"];

        1.第一次运行demo时会得到 userID = "register".

        2.第二次运行demo时会得到 userID = 1.

        这说明在第二次执行demo时候,registerDefaults:方法并没有修改 a "fallback" value.

    提高技能如同提升自信心。
  • 相关阅读:
    ssh远程执行命令
    华为交换机配置命令总结
    dmidecode查看设备硬件信息
    tcpdump高级过滤技巧
    ifconfig 下面的一些字段(errors, dropped, overruns)
    awk 高级技巧
    intel82599在centos6.5下编译安装
    非默认安装目录下mysql数据的导出与导入
    bash中使用mysql中的update命令
    mysql查看修改字符集
  • 原文地址:https://www.cnblogs.com/chims-liu-touch/p/9121587.html
Copyright © 2011-2022 走看看