Library/Catches:(跟Documents类似的两种方法)
1.利用沙盒跟目录拼接"Catches"字符串.
2.利用NSSearchPathForDirectoriesInDomains函数(将函数的第一个参数改为:NSCachesDirectory即可).
Library/Preference:通过NSUserDefaults类存取该目录下的设置信息.
下面分别详细介绍5中数据存储方式
属性列表
属性列表是一种XML格式的文件,拓展名为plist.
如果对象是NSString, NSDictionary, NSArray, NSData, NSNumber等类型,就可以使用:writeToFile:atomiclly:方法直接将对象写到属性列表文件中.
.属性列表-归档NSDictionary
将一个NSDictionary归档到一个plist属性列表中.
// 将数据封装成字典
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"15013141314" forKey:@"phone"];
[dict setObject:@"27" forKey:@"age"];
// 将字典持久化到Documents/stu.plist文件中
[dict writeToFile:path atomically:YES];
.属性列表-恢复NSDictionary
读取属性列表,恢复NSDictionary对象
// 读取Documents/stu.plist的内容,实例化NSDictionary
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
NSLog(@"phone:%@", [dict objectForKey:@"phone"]);
NSLog(@"age:%@", [dict objectForKey:@"age"]);
偏好设置(Preference)
很多iOS应用都支持偏好设置,比如保存用户名,密码,是否自动登录等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能.
每个应用都有个NSUserDefaults实例,通过它来存取偏好设置.
如保存用户名,字体大小,是否登录
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"Cat" forKey:@"username"];
[defaults setFloat:14.0f forKey:@"text_size"];
[defaults setBool:YES forKey:@"auto_login"];
读取上次保存的设置
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *username = [defaults stringForKey:@"username"];
float textSize = [defaults floatForKey:@"text_size"];
BOOL autoLogin = [defaults boolForKey:@"auto_login"];
注意:
UserDefaults设置数据时,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘.所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了.出现此问题,可以通过调用synchornize方法强制写入.
[defaults synchornize];
NSKeyedArchiver
如果对象是NSString, NSDictionary, NSArray, NSData, NSNumber等类型,就可以直接使用:NSKeyedArchiver进行归档和恢复.










