iOS下的对象归档NSCoding

iOS的系统库,提供了对象的归档Archive方法,这样很方便的让我们完成对象的本地化存储。归档又称为序列化encode,解归档又称为反序列化decode.

最常用的方式将数组,字典的对象序列化到本地文件中:

//这里是将cookies数组array归档到本地
NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"cookies.archive"];
BOOL flag = [NSKeyedArchiver archiveRootObject:cookies toFile:filePath];

//解归档时从本地文件读取并生成对象
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

自定义的对象要支持归档,需要实现NSCoding协议。实现了NSCoding协议后,就可以通过NSKeyedArchiver归档。

NSCoding协议有两个方法: -initWithCoder: 和 encodeWithCoder:。遵循NSCoding协议的类可以被序列化和反序列化,这样可以归档到磁盘上或分发到网络上。

//调用unarchiveObjectWithFile方法时,调用此方法
- (id)initWithCoder:(NSCoder *)decoder { 
    self = [super init]; 
    if (self) { 
	    _title = [decoder decodeObjectForKey:@"title"]; 
	    _author = [decoder decodeObjectForKey:@"author"]; 
	    _pageCount = [decoder decodeIntegerForKey:@"pageCount"]; 
    } 
 
    
 
    return self; 
} 

//调用archiveRootObject方法时,调用此方法
- (void)encodeWithCoder:(NSCoder *)encoder { 
    [encoder encodeObject:_title forKey:@"title"]; 
    [encoder encodeObject:_author forKey:@"author"]; 
    [encoder encodeInteger:_pageCount forKey:@"pageCount"]; 
} 

参考博客:【对象的归档和解归档 NSKeyedArchiver, NSKeyedUnarchiver】

文章来自 http://skymonkey.cn/

高能广告区

暂无广告哦=^^=。继续看看其它文章吧!