打造强大的BaseModel(3):让Model实现自动归档

424 查看

本文是「打造强大的BaseModel」的篇三篇,第一篇文章请见此:让Model自我描述 。第二篇文章请见此:让Model自动转换。相对于让Model实现自我描述和自动转换,让Model实现自动归档会难一点(事实后来我发现一点也不难)。我相信能够好好看完这三篇文章的人,绝对是有大收获的。

什么是iOS的归档

归档–NSKeyedArchiver,是iOS开发中基本的数据存储方式之一,和其他的数据存储方式相比,归档不仅能够存储任意类型的数据,而且使用起来也很简单。归档能将数据处理成NSData的形式,所以很容易以文件的形式保存在APP的沙盒中,而解归和归档相反,它是将保存在APP沙盒的归档文件逆归档,转换成归档前的状态。

传统的iOS归档方式

要想让一个自定义对象可以使用归档,必须要让其符合NSCoding协议,

上面的代码是iOS中NSCoding协议的定义。里面包含两个方法,其中一个是构造器。第一个方法

就是归档方法,它是为了告诉NSKeyedArchiver对象如何将数据归档成文件的。第二个方法(构造器)

就是解档方法了。它是告诉NSKeyedUnArchiver是如何将归档好的对象解档成原来的数据的
下面来看看传统的iOS归档方式,先定义一个类,让其符合NSCoding协议

我们需要在正确地重写这两个方法。这里面最需要注意的点有两个,一是不要把数据类型搞错。二是key名不要弄错了。然后下面开始测试