你的位置:首页 > 操作系统

[操作系统]iOS数据持久化文件读写之偏好设置


 很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能。每个应用都有个NSUserDefaults实例,通过它来存取偏好设置。比如,保存用户名、字体大小、是否自动登录等。NSUserDefaults 基本上支持所有的原生数据类型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。

1. 偏好设置简介

 大家应该记得在iOSDay35数据处理之文件读写中 6> 应用程序的沙盒目录 中写到 Library 文件夹下有一个文件夹的名字叫 Preferences(偏好),用于保存应用程序的偏好设置。当你进行偏好设置时,在这个文件夹下就会自动创建一个与你工程名一致的plist文件,偏好设置就存储在这个plist文件中。

 既然它是存储在一个plist文件里的,那么它自然也就是以键值对的方式存在的,它的存储形式其实就是一种的文件:

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文件夹下面的,偏好设置会将所有的数据都保存到同一个文件中。

 和基本数据类型中的NSDictionary相似,针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。

 




青海旅游住宿攻略青海旅游最佳时间青海自驾游最佳路线青海旅游多少钱青海旅游报价价格2015元旦广州免费好玩景点有哪些?广州元旦带孩子家人去什么地方好玩? 2015元旦广州哪里有活动?广州元旦带孩子家人好玩的地方有哪些? 2015锦绣中华元旦活动?元旦深圳锦绣中华民俗村门票优惠价格? 冰雪撒欢季 你不知道的黑龙江民族美食风向标(组图) 大亚湾小桂旅游攻略?小桂景点好玩吗? 惠州大亚湾旅游吃在哪里?大亚湾哪里有烧烤? 惠州大亚湾旅游度假去哪玩好?大亚湾有没有漂流水上乐园的地方? 惠州大亚湾旅游景点有哪些?惠州大亚湾海边旅游景点推荐? 【北京】----动物园购物小贴士 松涛水库:享有“天湖”盛誉的高山天池 【大理旅游】—大理旅游攻略 北京商场七夕购物打折活动信息汇总 马尔代夫可以穷游吗? 《下一站说爱你》的拍摄地在哪里?讲述了什么故事? 香港的治安好吗?遇到危险,要怎样报警? 《初恋这件小事》的拍摄地在哪里?拍摄地附近有什么景点? 552-0203-802 Datasheet 552-0203-802 Datasheet 552-0203-802F Datasheet 552-0203-802F Datasheet 552-0203F Datasheet 552-0203F Datasheet 佳木斯跟团港澳旅游 佳木斯跟团港澳旅游 佳木斯跟团港澳旅游 从浙江跟团到香港旅游 从浙江跟团到香港旅游 从浙江跟团到香港旅游 佳木斯跟团香港旅游 佳木斯跟团香港旅游 佳木斯跟团香港旅游