iOS 数据的存储和读取之归档

归档四一种很常见的文件存储方法,几乎任何类型的对象都能够被归档存储(实际上是一种文件保存形式)。

使用NSKeyedArichiver进行归档,用NSKeyedUnarichiver进行解归档。这种方式会在写入、读出数据之前堆数据进行序列化、反序列化操作。


一,简单归档 archiveRootObject

(1),归档

  1. NSString *homeDictionary = NSHomeDirectory();//获取根目录  
  2. NSString *homePath  = [homeDictionary stringByAppendingPathComponent:@"test.archiver"];//添加储存的文件名  
  3. BOOL flag = [NSKeyedArchiver archiveRootObject:@”归档测试” toFile:homePath];//归档一个字符串  

(2),解归档

[NSKeyedUnarchiver unarchiveObjectWithFile:homePath] ;


缺点:只能把一个对象归档进一个文件中。



二,归档多个对象

举例:归档CGPoint点、字符串和整数,使用encode方法进行,最后再写入文件;

(1),归档

  1. //归档数据  
  2. CGPoint point = CGPointMake(320.0, 480.0);  
  3. NSString *info = @"归档测试";  
  4. NSInteger value = 1000;  
  5. NSString *multiHomePath = [NSHomeDirectory() stringByAppendingPathComponent:@"multiTest.archiver"];  
  6. NSMutableData *data = [[NSMutableData alloc]init];  
  7. NSKeyedArchiver *archvier = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];  
  8.   
  9. //对多个对象进行归档  
  10. [archvier encodeCGPoint:point forKey:@"kPoint"];  
  11. [archvier encodeObject:info forKey:@"kInfo"];  
  12. [archvier encodeInteger:value forKey:@"kValue"];  
  13. [archvier finishEncoding];  
  14. [data writeToFile:multiHomePath atomically:YES]; 

(2),解归档

  1. NSMutableData *dataR = [[NSMutableData alloc]initWithContentsOfFile:multiHomePath];  
  2. NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:dateR];  
  3. CGPoint pointR = [unarchiver decodeCGPointForKey:@"kPoint"];  
  4. NSString *infoR = [unarchiver decodeObjectForKey:@"kInfo"];  
  5. NSInteger valueR = [unarchiver decodeIntegerForKey:@"kValue"];  
  6. [unarchiver finishDecoding];  
  7. NSLog(@"%f,%f,%@,%d",pointR.x,pointR.y,infoR,valueR);  


限制:归档的都是一些基本数据类型。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值