归档和解归档

归档和解归档除了用于NSString、NSNumber、NSArray、NSDictionary等对象和NSData之间的转换(见 点击打开链接),还可以用来保存别的对象,如保存界面上的view对象。
对象归档必须做两件事情:
1.对象必须遵守NSCoding协议
2.在对象中实现该协议的两个方法
// 属性编码
- (
void )encodeWithCoder:( NSCoder *)aCoder{
    [aCoder encodeObject:
self .name forKey: @"name" ];
    [aCoder encodeInteger:
self .age forKey: @"age" ];
}

// 属性解码
- (
id )initWithCoder:( NSCoder *)aDecoder{
   
self = [ super init ];
   
if ( self ) {
       
self .name = [aDecoder decodeObjectForKey: @"name" ];
       
self .age = [aDecoder decodeIntegerForKey: @"age" ];
    }
   
return self ;
}

NSString、NSNumber、NSArray、NSDictionary以及UIView默认遵守了NSCoding协议。

//    一、 归档
    NSArray *names = @[@ A " , @ B " , @ C " , @ D " ] ;
//   1. 准备一个可变的 data
    NSMutableData *data = [NSMutableDatadata];
//    2. 创建归档对象
   
NSKeyedArchiver *arch = [[ NSKeyedArchiver alloc ] initForWritingWithMutableData :data];
//    3. 把对象编码进去
    [arch
encodeObject :names forKey : @"names" ];
//    4. 完成编码
    [arch finishEncoding];
//    5、写入文件
    [data writeToFile:@"/Users/tarena/Desktop/names"atomically:YES];

//    二、解归档
//    1、读入文件
   NSData *data = [NSData dataWithContentsOfFile:@"/Users/tarena/Desktop/names"];
//    2、 创建反归档对象
    NSKeyedUnarchiver *unArch = [[NSKeyedUnarchiveralloc]initForReadingWithData:data];
//    3、 解码
    NSArray *names = [unArch decodeObjectForKey:@"names"];

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值