对象要支持归档,需要实现 NSCoding 协议.
NSCoding 协议有两个方法, encodeWithCoder 方法对对象的属性数据做编码处理. initWithCoder 解码归档数据来初始化.
实现 NScoding 协议后,就能通过 NSKeydeArchiver 归档
例:
//解码方法
- (id)initWithCoder: (NScoder *) aDecoder{
self = [super init];
if (self != nil) {
_name = [[aDecoder decodeObjectForKey@"name"] copy];
_age = [aDecoder decodeIntForKey@"age"];
_applse = [[aDecoder decodeObjectForKey@"apples"] retain];
}
return self;
}
最好这样写成宏
#defin NAME @"name"
[aCoder encodObject: _name forKey:NAME];