對對象進行歸檔
- 使對象遵守
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
方法調用。前者在解析文件、子控件還未加載時調用,后者在子控件全部加載完畢后調用。