什么是歸檔和解檔?
- 歸檔(也稱對(duì)象的序列化) 就是通過某種格式把對(duì)象保存成本地文件,以便以后讀回該對(duì)象的內(nèi)容
- 解檔(也稱解歸檔/讀檔) 就是把歸檔的對(duì)象文件讀成原來的對(duì)象的過程
如何歸檔和解檔
1. 系統(tǒng)類的歸檔和解檔
注:1. NSDictionary也可以直接進(jìn)行歸檔和解檔 2. 歸檔的對(duì)象包括這個(gè)對(duì)象中的屬性,它們所屬的類都必須要遵守NSCoding 協(xié)議才能歸檔和解檔
2. 自定義類的歸檔和解檔
如果自定義的類對(duì)象要進(jìn)行歸檔,那么這個(gè)對(duì)象的屬性所屬的類也必須要遵守歸檔協(xié)議NSCoding
必須實(shí)現(xiàn)以下兩個(gè)方法:

屏幕快照 2017-04-19 上午10.09.07.png
3. 歸檔成文件時(shí),需要使用的類與方法

屏幕快照 2017-04-19 上午10.15.50.png
4. 歸檔后的文件讀出為對(duì)象時(shí),需要使用的類與方法

屏幕快照 2017-04-19 上午10.16.16.png
NSUserDefault
生成單例對(duì)象

屏幕快照 2017-04-19 上午10.30.59.png
1.存放類似plist文件中能存的信息:字典,數(shù)組,字符串,布爾數(shù)據(jù),數(shù)字對(duì)象,NSData,NSDate
2.像操作字典一樣進(jìn)行存入和讀出
NSUserDefaults單例以key-value的形式存儲(chǔ)了一系列偏好設(shè)置,key是名稱,value是相應(yīng)的數(shù)據(jù)。存/取數(shù)據(jù)時(shí)可以使用方法objectForKey:和setObject:forKey:來把對(duì)象存儲(chǔ)到相應(yīng)的plist文件中,或者讀取,既然是plist文件,那么對(duì)象的類型則必須是plist文件可以存儲(chǔ)的類型,正如官方文檔中提到的——
- NSData
- NSString
- NSNumber
- NSDate
- NSArray
- NSDictionary
而如果需要存儲(chǔ)plist文件不支持的類型,比如圖片,可以先將其歸檔為NSData類型,再存入plist文件,需要注意的是,即使對(duì)象是NSArray或NSDictionary,他們存儲(chǔ)的類型也應(yīng)該是以上范圍包括的。

屏幕快照 2017-04-19 上午10.37.18.png

屏幕快照 2017-04-19 上午10.37.29.png

屏幕快照 2017-04-19 上午10.37.48.png

屏幕快照 2017-04-19 上午10.39.39.png
[defaults synchronize];
其中,方法synchronise是為了強(qiáng)制存儲(chǔ),其實(shí)并非必要,因?yàn)檫@個(gè)方法會(huì)在系統(tǒng)中默認(rèn)調(diào)用,但是你確認(rèn)需要馬上就存儲(chǔ),這樣做是可行的。