NSData是一个字节缓冲区的面向对象封装。这意味着,将数据转换成NSData对象可以实现数据存储和读取.而NSCoding恰好可以做到这一点。
NSCoding协议规定了两个必须实现的方法:initWithCoder:和encodeWithCoder:。initWithCoder:方法使用给定的状态初始化一个新对象,也称为反序列化。encodeWithCoder:方法接收一个带状态的对象,并对其进行序列化。我们这么理解,把encodeWithCoder:方法理解成将对象打包准备传输,把initWithCoder:方法理解成将接收到的数据解包成可用的对象。
我们接下来通过一个简单的model类实现归档与归档
#Model.h
#warning 第一步:NSCoding协议
@interface Model : NSObject<</span>NSCoding>
@property (nonatomic, retain)NSString *name;
@property (nonatomic, assign)NSInteger age;
#warning 第二步:将属性按照一定顺序进行归纳
//归档(序列化)的协议,将属性转换为NSData的时候
- (void)encodeWithCoder:(NSCoder *)aCoder
{
}
//反归档(反序列化),将NSData转换为Model的时候,将对应的属性进行赋值
- (id)initWithCoder:(NSCoder *)aDecoder
{
}
- (void)viewDidLoad {
//将model类型的对象归档为(序列化)为NSData类型的对象.然后将NSData类型对象进行存储
//将model装换为data
//如果model在数组中,想要存储数组,也必须用复杂类型对象将数组转为data,然后进行存储(一种加密模式)
//
}
文件读取
- (void)readModel
{
//将data装换为model
}