免费开源的iOS开发学习平台

归档:1-简介

归档(序列化),即把对象转为字节码,以文件的形式存储到磁盘上;程序运行过程中或者当再次打开程序的时候,可以通过解归档(反序列化)还原这些对象。只要遵循了NSCoding协议的对象都可以通过它实现序列化,由于绝大多数支持存储数据的Foundation和Cocoa Touch类都遵循了NSCoding协议,因此,对于大多数类来说,归档都是支持的。

归档/解档简介

归档和解档在Foundation框架中分别对应NSKeyedArchiver类和NSKeyedUnarchiver类,在这两个类的定义中,提供了用于对象归档和解档的方法。用于归档以及解档的方法都是成对出现的,即一个归档方法必然对应了一个解档的方法。NSKeyedArchiver类和NSKeyedUnarchiver类中常用的归档解档方法如下所示。

  • 把对象归档到一个文件中。
+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path;
  • 从一个文件中解档,返回一个对象
+ (nullable id)unarchiveObjectWithFile:(NSString *)path;
  • 创建自定义归档对象(Archive)。
- (instancetype)initForWritingWithMutableData:(NSMutableData *)data;
  • 自定义解档对象(Unarchiver)。
- (instancetype)initForReadingWithData:(NSData *)data;
  • 归档一个对象,并且指定一个键值,读取时可以根据键值读取
- (void)encodeObject:(nullable id)objv forKey:(NSString *)key;
  • 根据键值解档对象
- (nullable id)decodeObjectForKey:(NSString *)key;
  • 完成归档后调用
- (void)finishEncoding;
  • 完成解档后调用
- (void)finishDecoding;