对对象进行归档
- 使对象遵守
NSCoding
协议 - 实现对象的
encodeWithCoder:
方法,在该方法中调用[aCode encodeObject:forKey]
方法来保存需要保存的数据 - 调用
NSKeyedArchiver
的archiveRootObject:toFile:
方法,传入需要归档的文件,和归档的目标位置
</br>
解档
- 使对象遵守
NSCoding
协议 - 实现对象的
initWithCoder:
方法,在该方法中调用[aDecoder decodeObjectForKey:
方法解析所需的属性 - 调用
NSKeyedUnarchiver
的unarchiveObjectWithFile:
方法进行解档
</br>
注意事项
- 如果归档时,所存的属性中包含自定义的对象,则这些自定义的对象也需要遵循
NSCoding
协议,并实现encodeWithCoder:
方法 - 如果解档时,解析的属性中包含自定义的对象,则这些自定义的对象也需要遵循
NSCoding
协议,并实现initWithCoder:
方法 - 在
initWithCoder:
方法中,只有当父类遵守了NSCoding
协议时,才能使用[super initWithCoder:]
方法 - 对于UIView以及其子类,
initWithCoder:
方法先于awakeFromNib
方法调用。前者在解析文件、子控件还未加载时调用,后者在子控件全部加载完毕后调用。