数据的持久化存储


1.属性列表

2.对象归档

3.数据库存储(SQLite3)(用c写的,后来有了FMDB,FMDB是用oc写的,轻量级且用着方便)

4.苹果公司提供的持久性工具Core Data。


用法解析:

1,存储键值对小数据是最合适,因为速率很高,plist,NSUserDefaults

  属性列表存储机制,这个机制支持NSArray,NSDictionary,NSData,NSString,NSNumber,NSDate 等等


[cpp]  view plain  copy
  1. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  2. NSString *docPath = [paths objectAtIndex:0];  
  3. NSString *myFile = [docPath stringByAppendingPathComponent:@"my.list"];  
  4. //读取文件  
  5. NSArray *array = [[NSArray alloc] initWithContentsOfFile:myFile];  
  6. //操作完若修改了数据则,写入文件  
  7. [array writeToFile:myFile atomically:YES];  

1).分开存取
// 存
[[NSUserDefaults standardUserDefaults] setInteger:userID forKey:@”userID”];
[[NSUserDefaults standardUserDefaults] setObject:name forKey:@”name”];
// 取
NSInteger uId = [[[NSUserDefaults standardUserDefaults] integerValueForKey:@”userID”];
NSString* name = [[NSUserDefaults standardUserDefaults] stringForKey:@”name”];


2).按对象存取
// 存
[[NSUserDefaults standardUserDefaults] setObject:self forKey:@”user”];
// 取
User* u = [[NSUserDefaults standardUserDefaults] objectForKey”@”user”];


2.对象归档


要使用对象归档,对象必须实现NSCoding协议.大部分Object C对象都符合NSCoding协议,也可以在自定义对象中实现NSCoding协议,要实现NSCoding协议,实现两个方法:
- (void) encodeWithCoder:(NSCoder *)encoder 与 -(void)initWithCoder:(NSCoder *)encoder
同时,建议对象也同时实现NSCopying协议,该协议允许复制对象,要实现NSCopying协议须实现 -(id)copyWithZone:(NSZone *)zone 方法 。


  1. - (void)encodeWithCoder:(NSCoder *)aCoder  
  2. {   //encoder  
  3.     [aCoder encodeObject:stringAforKey:@"1"];  
  4.     [aCoder encodeObject:stringBforKey:@"2"];  
  5. }  
  6. - (id)initWithCoder:(NSCoder *)aDecoder  
  7. {  
  8.     //decoder  
  9.     if (self = [superinit]) {  
  10.         stringA = [[aDecoder decodeObjectForKey:@"1"] retain];  
  11.         stringB = [[aDecoder decodeObjectForKey:@"2"] retain];  
  12.     }  
  13.     returnself;  
  14. }  
  15.   
3.只是建议不直接操作SQLite库,而是采用一些开源的第三方库来进行操作。比如:
FMDB:https://github.com/ccgus/fmdb.git
对SQLite都做了不错的封装。

4.Core Data数据持久化是对SQLite的一个升级,它是ios集成的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值