首页 > 其他 > 详细

归档和解归档

时间:2015-03-26 23:34:30      阅读:316      评论:0      收藏:0      [点我收藏+]
归档和解归档除了用于NSString、NSNumber、NSArray、NSDictionary等对象和NSData之间的转换(见NSData和NSMutableData),还可以用来保存别的对象,如保存界面上的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 = [superinit];
   
if (self) {
       
self.name = [aDecoder decodeObjectForKey:@"name"];
       
self.age = [aDecoder decodeIntegerForKey:@"age"];
    }
   
returnself;
}

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

//    一、归档
    NSArray *names = @[@A",@B",@C",@D"];
//   1.准备一个可变的data
    NSMutableData *data = [NSMutableDatadata];
//    2.创建归档对象
   
NSKeyedArchiver *arch = [[NSKeyedArchiveralloc]initForWritingWithMutableData:data];
//    3.把对象编码进去
    [arch
encodeObject:namesforKey:@"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"];

归档和解归档

原文:http://blog.csdn.net/debolee/article/details/44655873

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!