iOS开发-文件存储方法汇总

-方法一: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];
}

上面提到的三种方法的缺点是,无论多小的改动,都是整存整取。

方法四:SQLite

方法五:Core Data

你可能感兴趣的:(iOS开发-文件存储方法汇总)