NSUserDefaults中的registerDefaults

1.NSUserDefaults的作用是什么?

NSUserDefaults是一个单例对象,通过[NSUserDefaults standardUserDefaults];获取.
作用简单来说是以键值对的方式将数据在沙盒中实现存取操作.

2.NSUserDefaults中的registerDefaults有什么用?

当使用NSUserDefaults生成的单例对象通过key在沙盒中获取数据时,如果获取不到,则返回null,在某些时刻,就算该key的值不存在,也想返回默认的值,那么就可以使用registerDefaults.
举例:

    // 1.创建一个字典
    NSDictionary *dict = @{@"name":@"张三"};
    // 2.使用NSUserDefaults注册默认值
    [[NSUserDefaults standardUserDefaults] registerDefaults:dict];
    // 3.通过key取出值,该值为:张三
    NSLog(@"%@",[[NSUserDefaults standardUserDefaults] valueForKey:@"name"]);
    // 4.设置name的值为李四
    [[NSUserDefaults standardUserDefaults] setObject:@"李四" forKey:@"name"];
    // 5.通过key取出值,该值为:李四
    NSLog(@"%@",[[NSUserDefaults standardUserDefaults] valueForKey:@"name"]);
    // 6.将name的值移除
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"name"];
    // 7.通过key取出值,该值为:张三
    NSLog(@"%@",[[NSUserDefaults standardUserDefaults] valueForKey:@"name"]);

总结:

当使用registerDefaults的时候,系统并不会将默认值存储到硬盘中,所以当app启动时就要调用一次registerDefaults,故一般将该注册代码写在application:didFinishLaunchingWithOptions中是最合适的

你可能感兴趣的:(NSUserDefaults中的registerDefaults)