IOS 文件持久化
持久化(presistence)即把文件数据保存到可存储设备中
包括以下几种方式:属性列表(property List)、对象归档、SQlite、CoreData
1.属性列表:property list里面存取的数据类型及其有限包括数组、字典、字符串等,
property list还经常用来配置应用程序的设置,存放少量数据。NSUserdefault 是plist的一种,也是一种单例模式。
创建plist 按command +N快捷键创建,或者File —> New —> New File
//读取plist,注意文件名大小写
NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"TopSites"
ofType:@"plist"];
NSMutableDiceonary *data =
[[NSMutableDiceonary alloc] initWithContentsOfFile:plistPath];
NSLog(@"%@", data[@"TopSites"][0][@"TopSiteTitle"]);
//添加一项内容
[data setObject:@"add some content" forKey:@"NewKey"]; //获取应用程序沙盒的Documents目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *plistPath1 = [paths objectAtIndex:0]; //得到完整的文件名
NSString *filename = [plistPath1 stringByAppendingPathComponent:@"TopSites1.plist"];
//写入
[data writeToFile:filename atomically:YES];
2.对象归档:要求在类中实现的数据的每个属性都是基本数据类型或都符合NSCoding协议的某个类的实例
实现NSCoding和NSCopying协议
NSCoding协议声明了两个方法:
-(void)encodeWithCoder:(NSCoder *)aCoder, 是将对象写入到文件中。也称为序列化过程。
-(id)initWithCoder:(NSCoder *)aDecoder,是将文件中的数据读入到对象中。也称为反序列化过程。
NSCopying协议声明了一个方法:
-(id)copyWithZone:(NSZone *)zone ,是将对象复制的方法。
3.SQLite数据库
嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需 要管理。因为客户端和服务器在同一进程空间运行。SQLite 的数据 库权 限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有 网络服务器。它需要一些内存, 其它开销很小,适合用于嵌入式设备。你需 要做的仅仅是把它正确地编译到你的程序中去。
FMDB的下载地址https://github.com/ccgus/fmdb
SQLite数据增删查改参见
http://www.blogjava.net/myqiao/archive/2011/07/13/354298.html
http://www.cnblogs.com/linjiqin/archive/2011/05/27/2059937.html