所謂的持久化睬愤,就是將數(shù)據(jù)保存到硬盤中芯肤,使得在應(yīng)用程序或機(jī)器重啟后可以繼續(xù)訪問(wèn)之前保存的數(shù)據(jù)潜支。
iOS主要有四種方式實(shí)現(xiàn)數(shù)據(jù)的持久化
1 屬性列表(plist)
屬性列表是一種明文的輕量級(jí)存儲(chǔ)方式蒸矛,其存儲(chǔ)格式有多種,最常規(guī)格式為XML格式闽颇。在我們創(chuàng)建一個(gè)新的項(xiàng)目的時(shí)候盾戴,Xcode會(huì)自動(dòng)生成一個(gè)info.plist文件用來(lái)存儲(chǔ)項(xiàng)目的部分系統(tǒng)設(shè)置。如保存用戶的用戶名和密碼(密碼要進(jìn)行加密)兵多。
NSArray; NSMutableArray;
NSDictionary; NSMutableDictionary;
NSData; NSMutableData;
NSString; NSMutableString;
NSNumber; NSDate;
plist只能用上面幾種類型進(jìn)行讀取尖啡,由于屬性列表本身不加密,所以安全性幾乎可以說(shuō)為零剩膘。因?yàn)榭缮簦瑢傩粤斜碚S糜诖鎯?chǔ)少量的并且不重要的數(shù)據(jù)。
在程序啟動(dòng)后援雇,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)NSUserDefaults的單例對(duì)象,[NSUserDefaults standardUserDefaults] 存儲(chǔ)的目錄就在沙盒中的 /Library/Prefereces 目錄下.我們可以獲取這個(gè)單例來(lái)存儲(chǔ)少量的數(shù)據(jù)椎扬,它會(huì)將輸出存儲(chǔ)在.plist格式的文件中惫搏。其優(yōu)點(diǎn)是像字典一樣的賦值方式方便簡(jiǎn)單,但缺點(diǎn)是無(wú)法存儲(chǔ)自定義的數(shù)據(jù)蚕涤。
當(dāng)然也可以自己創(chuàng)建plist文件筐赔,然后指定存儲(chǔ)位置
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject; NSString *fileName = [path stringByAppendingPathComponent:@"123.plist"]; NSArray *array = @[@"123", @"456", @"789"]; [array writeToFile:fileName atomically:YES]; NSArray *result = [NSArray arrayWithContentsOfFile:fileName]; NSLog(@"%@", result);
2 數(shù)據(jù)歸檔(NSKeyedValueArchiver)
3 數(shù)據(jù)庫(kù)(sqlite 3)
4 CoreData(sqlite)
參考資料
http://www.reibang.com/p/86ea6da905cf
http://www.cocoachina.com/ios/20150720/12610.html
keychain存儲(chǔ)
https://my.oschina.net/zhuzhu1223/blog/635023
NSUserDefaults的安全性討論
http://blog.csdn.net/kaka_2928/article/details/51326035