环境集成iOS 开发 牛叉的demo

runtime在归档解档中的运用

2016-08-17  本文已影响42人  逆流丶而上

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

1、归档

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

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

NSCoding的归档协议

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

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

归档

2、解档

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

NSCoding的解档协议

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

解档

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

上一篇 下一篇

猜你喜欢

热点阅读