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