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
中是最合适的