在進行數(shù)據(jù)持久化的時候泰演,需要進行序列化,轉(zhuǎn)化成二進制流葱轩,同樣睦焕,得到二進制流后藐握,需要進行反序列化,還原數(shù)據(jù)垃喊。
1猾普、歸檔
寫文件時,如果是系統(tǒng)的一些類本谜,可以直接調(diào)用writeToFile方法來進行寫文件,或者使用NSKeyedArchive類來進行操作初家。這里主要說自定義的model類的數(shù)據(jù)持久化。
自定義的model歸檔的時候乌助,需要遵循NSCoding協(xié)議溜在。如果沒有遵循NSCoding協(xié)議,在進行歸檔時會崩潰他托。NSCoding協(xié)議必須實現(xiàn)encoderWithCoder和initWithCoder掖肋,前者是歸檔調(diào)用的方法,后者是解檔調(diào)用的方法上祈。在model類中實現(xiàn)歸檔方法培遵,如下圖:
NSCoding的歸檔協(xié)議
使用runtime獲取model類的所有屬性,添加到NSCoder中登刺,不用再一個一個屬性的去賦值籽腕。
使用NSKeyedArchive進行數(shù)據(jù)持久化如下:
歸檔
2、解檔
model進行解檔纸俭,必須遵守NSCoding的解檔協(xié)議皇耗,如下圖:
NSCoding的解檔協(xié)議
讀取的時候,使用NSKeydUnarchiver把二進制流轉(zhuǎn)化為model揍很。如下圖:
解檔
首先從沙盒中讀取郎楼,然后用NSKeyedUnarchiver進行轉(zhuǎn)換。