1.基本的数据类型如NSString、NSDictionary、NSArray、NSData、NSNumber等可以直接用NSKeyedArchiver归档和恢复。
2.不是所有的对象都可以直接用这种方法归档,只有遵守了NSCoding协议的对象才可以。
3.NSCoding的协议有2个方法
- (void)encodeWithCoder:(NSCoder *)encoder
每次归档对象时,都会调用这个方法,一般在这个方法里面指定如何规定对象中的每个实例变量,可以使用[encoder encodeObject:self.access_token forKey:@""];方法归档实例变量。
- (id)initWithCoder:(NSCoder *)decoder:
每次从文件中恢复(解码)对象时,都会调用这个方法,一般在这个方法里面指定如何解码文件中的数据为对象的实例变量,可以使用[decoder decodeObjectForKey:@"access_token"];方法解码变量。
注意点:
如果父类也遵守了NSCoding协议,请注意:
应该在encodeWithCoder方法中加一句[super encodeWithCoder];确保继承的变量也能归档
在initWithCoder:方法中加self =[super initWithCoder:decoder];确保继承的变量也能解码(恢复)