iOS 数据持久化的方式总结

一.属性列表, 可以通过NSArray, NSDictionary等等的writeToFile 方法写入一个plist 文件中, 持久保持属性

沙盒中的文件夹:  1.Documents : 存储长久保存的数据

               2.Library :

                 caches : 存放缓存文件, 比如视频, 音频, 图片, 小说等等

                 Preferences : 存储偏好设置, 比如: 应用程序是否是第一次运行, 保存用户名和密码,

              3.tmp : 存储临时文件, 比如下载的 zip, 解压后直接删除

数据持久化方式:

        1.(最简单) NSUserDefaults; 只适合存储少量数据, 比如账号, 密码;

        2.读写文件, 只支持八种数据, NSString; NSArray, NSDictionary ,二进制 --- NSData 以及各自的可变子类

VIP

        对于数组, 字典大容器deng, 想要实现文件读写, 必须要保证文件中的元素也必须是 数组, 字符串, 字典, 二进制数据等数据类型之一;

二.归档, 通过 Archive 对象对数据你进行归档处理, 其过程比较傲复杂, 归档后文件文 .Archive 文件, 是一个二进制二年间, 无法查看, 需要用NSUnArchive 解档操作才能查看

//获取路径的方法

- (NSString *)getFilePath {

    //获取documents 文件加路径

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    //拼接存储文件的路径

    NSString *filePath = [path stringByAppendingPathComponent:@"zhang.txt"];

    return filePath;

}

//1.创建归档工具对象

    NSMutableData *myData = [NSMutableData data];

    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:myData];

//2.开始归档

    [archiver encodeObject:contact forKey:@"tao"];

    //3.结束归档

    [archiver finishEncoding];

    //4.内存释放

    //5.data 写入文件

    [myData writeToFile:[self getFilePath] atomically:YES];

//反归档

//1.从本地读数据

    NSData *data = [NSData dataWithContentsOfFile:[self getFilePath]];

    //2.创建反归档工具

    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];

    //3.开展反归档

    Contact *contact = [unarchiver decodeObjectForKey:@"tao"];

    //4.反归档结束

    [unarchiver finishDecoding];

    //释放

三.利用sqlite, 建议不直接操作SQLite库,而是采用一些第三方库操作数据库. 例如 fmdb

四.CoreData对数据进行持久化保存, 本质上是使用SQLite保存数据,但是它不需要编写任何SQL语句。

 

posted @ 2015-10-19 19:46  kevin丶涛  阅读(187)  评论(0编辑  收藏  举报