NSUserDefaults实例,通过它来存取偏好设置。比如,保存用户名、字体大小、是否自动登录等。NSUserDefaults 基本上支持所有的原生数据类型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。
1. 偏好设置简介
大家应该记得在iOSDay35数据处理之文件读写中 6> 应用程序的沙盒目录 中写到 Library 文件夹下有一个文件夹的名字叫 Preferences(偏好),用于保存应用程序的偏好设置。当你进行偏好设置时,在这个文件夹下就会自动创建一个与你工程名一致的plist文件,偏好设置就存储在这个plist文件中。
以键值对的方式存在的,它的存储形式其实就是一种XML格式的文件:
2. 偏好设置的使用
1> 保存数据
1 // 创建 NSUserDefaults 对象用于设置偏好设置
2 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
3
4 // 设置偏好
5 [defaults setObject:@"zf" forKey:@"name"];
6 [defaults setInteger:24 forKey:@"age"];
7 [defaults setBool:YES forKey:@"gender"];
8
9 // 立即同步
10 [defaults synchronize];
使用偏好设置对数据进行保存之后, 它保存到系统的时间是不确定的,会在将来某一时间点自动将数据保存到Preferences文件夹下面,如果需要即刻将数据存储,必须使用立即同步 [defaults synchronize]
在 NSUserDefaults 类中封装了一系列的set方法用于保存不同类型的数据
1 - (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName;
2 - (void)setFloat:(float)value forKey:(NSString *)defaultName;
3 - (void)setDouble:(double)value forKey:(NSString *)defaultName;
4 - (void)setBool:(BOOL)value forKey:(NSString *)defaultName;
5 - (void)setURL:(nullable NSURL *)url forKey:(NSString *)defaultName NS_AVAILABLE(10_6, 4_0);
2> 读取数据
1 // 读取数据
2 NSString *name = [defaults objectForKey:@"name"];
3 int age = (int)[defaults integerForKey:@"age"];
4 BOOL gender = [defaults boolForKey:@"gender"];
打印结果
与保存数据相同,在 NSUserDefaults 类中封装了一系列得到数据的方法
1 - (nullable NSString *)stringForKey:(NSString *)defaultName;
2 - (nullable NSArray *)arrayForKey:(NSString *)defaultName;
3 - (nullable NSDictionary<NSString *, id> *)dictionaryForKey:(NSString *)defaultName;
4 - (nullable NSData *)dataForKey:(NSString *)defaultName;
5 - (nullable NSArray<NSString *> *)stringArrayForKey:(NSString *)defaultName;
6 - (NSInteger)integerForKey:(NSString *)defaultName;
7 - (float)floatForKey:(NSString *)defaultName;
8 - (double)doubleForKey:(NSString *)defaultName;
9 - (BOOL)boolForKey:(NSString *)defaultName;
10 - (nullable NSURL *)URLForKey:(NSString *)defaultName NS_AVAILABLE(10_6, 4_0);
3> 删除数据
1 // 删除偏好设置
2 [defaults removeObjectForKey:@"name"];
3 [defaults removeObjectForKey:@"age"];
4 [defaults removeObjectForKey:@"gender"];
应用程序的配置信息的, 一般情况不要在偏好设置中保存其他数据。如果利用系统的偏好设置来存储数据, 默认就是存储在Preferences文件夹下面的,偏好设置会将所有的数据都保存到同一个文件中。
进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。