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.

    提高技能如同提升自信心。
  • 相关阅读:
    文件操作
    python中的函数递归和迭代问题
    函数的闭包与装饰器
    函数的名称空间和作用域
    python学习之路(四) ---函数
    python __name__问题
    浅谈python中的引用和拷贝问题
    Python中的缩进问题
    粘包现象
    socket编程
  • 原文地址:https://www.cnblogs.com/chims-liu-touch/p/9121587.html
Copyright © 2011-2022 走看看