runtime在归档解档中的运用

在进行数据持久化的时候,需要进行序列化,转化成二进制流,同样,得到二进制流后,需要进行反序列化,还原数据。

1、归档

写文件时,如果是系统的一些类,可以直接调用writeToFile方法来进行写文件,或者使用NSKeyedArchive类来进行操作。这里主要说自定义的model类的数据持久化。

自定义的model归档的时候,需要遵循NSCoding协议。如果没有遵循NSCoding协议,在进行归档时会崩溃。NSCoding协议必须实现encoderWithCoder和initWithCoder,前者是归档调用的方法,后者是解档调用的方法。在model类中实现归档方法,如下图:


runtime在归档解档中的运用_第1张图片
NSCoding的归档协议

使用runtime获取model类的所有属性,添加到NSCoder中,不用再一个一个属性的去赋值。

使用NSKeyedArchive进行数据持久化如下:


归档

2、解档

model进行解档,必须遵守NSCoding的解档协议,如下图:


runtime在归档解档中的运用_第2张图片
NSCoding的解档协议

读取的时候,使用NSKeydUnarchiver把二进制流转化为model。如下图:

解档

首先从沙盒中读取,然后用NSKeyedUnarchiver进行转换。

你可能感兴趣的:(runtime在归档解档中的运用)