NO1. IOS文件持久化

来源:互联网 发布:那你的花呗只能淘宝 编辑:程序博客网 时间:2024/05/16 15:41

IOS文件持久化

持久化(presistence)即把文件数据保存到可存储设备中

包括以下几种方式:属性列表(property List)、对象归档、SQliteCoreData

1.属性列表:property list里面存取的数据类型及其有限包括数组、字典、字符串等,

property list还经常用来配置应用程序的设置,存放少量数据。NSUserdefaultplist的一种,也是一种单例模式。

创建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协议的某个类的实例

实现NSCodingNSCopying协议 

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