在进行数据持久化的时候,需要进行序列化,转化成二进制流,同样,得到二进制流后,需要进行反序列化,还原数据。
1、归档
写文件时,如果是系统的一些类,可以直接调用writeToFile方法来进行写文件,或者使用NSKeyedArchive类来进行操作。这里主要说自定义的model类的数据持久化。
自定义的model归档的时候,需要遵循NSCoding协议。如果没有遵循NSCoding协议,在进行归档时会崩溃。NSCoding协议必须实现encoderWithCoder和initWithCoder,前者是归档调用的方法,后者是解档调用的方法。在model类中实现归档方法,如下图:
![](https://img.haomeiwen.com/i2455861/710d2d1fc13ad664.png)
使用runtime获取model类的所有属性,添加到NSCoder中,不用再一个一个属性的去赋值。
使用NSKeyedArchive进行数据持久化如下:
![](https://img.haomeiwen.com/i2455861/3c0f6f19b9b05c6a.png)
2、解档
model进行解档,必须遵守NSCoding的解档协议,如下图:
![](https://img.haomeiwen.com/i2455861/e5ff0eafa9eaba15.png)
读取的时候,使用NSKeydUnarchiver把二进制流转化为model。如下图:
![](https://img.haomeiwen.com/i2455861/8f65004af86f35d8.png)
首先从沙盒中读取,然后用NSKeyedUnarchiver进行转换。
网友评论