-方法一:NSUserDefaults
用途
一般将轻量级的用户偏好存储在这里,比如用户名,游戏最高得分等。
存储路径
存储路径为dataContainer下的Library/Perferance
文件格式
.plist
使用方法
[[NSUserDefaults standardUserDefaults] setBool:isRemember forKey:@"remember"]; // 存
_rememberSwitch.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"remember"]; // 取
可以存储的内容格式有:
NSString
NSData
NSDate
NSArray
NSDictionary
NSNumber (可以将bool,integer,float,double封装成NSNumber)
-方法二:将数组,字典存储到指定路径,并存储为.plist文件
用途
将自定义的数组,字典存储为.plist文件
存储路径
指定的任意路径
文件格式
.plist
使用方法
// 存
NSArray *array = @[@"amao", @"agou"];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"array.plist"];
[array writeToFile:path atomically:YES];
// 取
NSArray *array = [NSArray arrayWithContentsOfFile:path atomically:YES];
-方法三:对象归档
用途
将自定义的Model类转换成特定的数据流,存储到本地(自定义对象以及对象的所有属性需要遵循NSCoding)
存储路径
指定的任意路径
文件格式
我通常会以.archive作为后缀
使用方法
自定义对象类需要实现以下两个方法:
- encodeWithCoder: // 对象转换成特定数据流
- initWithCoder: // 将文件转换成特定的对象
保存方法:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:保存model的数组];
[data writeToFile:filePath atomically:YES];
取方法:
id object = [NSKeyedUnarchiver unarchiverObjectWithFile:filePath];
if ([object isKindOfClass:[NSArray class]]) {
[model数组 addObjectsFromArray:object];
}
上面提到的三种方法的缺点是,无论多小的改动,都是整存整取。