數(shù)據(jù)持久化

所謂的持久化,就是將數(shù)據(jù)保存到硬盤中,使得在應(yīng)用程序或機(jī)器重啟后可以繼續(xù)訪問之前保存的數(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文件用來存儲(chǔ)項(xiàng)目的部分系統(tǒng)設(shè)置。如保存用戶的用戶名和密碼(密碼要進(jìn)行加密)。
NSArray; NSMutableArray;
NSDictionary; NSMutableDictionary;
NSData; NSMutableData;
NSString; NSMutableString;
NSNumber; NSDate;
plist只能用上面幾種類型進(jìn)行讀取,由于屬性列表本身不加密,所以安全性幾乎可以說為零。因?yàn)椋瑢傩粤斜碚S糜诖鎯?chǔ)少量的并且不重要的數(shù)據(jù)。

在程序啟動(dòng)后,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)NSUserDefaults的單例對(duì)象,[NSUserDefaults standardUserDefaults] 存儲(chǔ)的目錄就在沙盒中的 /Library/Prefereces 目錄下.我們可以獲取這個(gè)單例來存儲(chǔ)少量的數(shù)據(jù),它會(huì)將輸出存儲(chǔ)在.plist格式的文件中。其優(yōu)點(diǎn)是像字典一樣的賦值方式方便簡單,但缺點(diǎn)是無法存儲(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ù)庫(sqlite 3)

4 CoreData(sqlite)

參考資料
http://www.lxweimin.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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 在程序開發(fā)中,數(shù)據(jù)層永遠(yuǎn)是程序的核心結(jié)構(gòu)之一。我們將現(xiàn)實(shí)事物進(jìn)行抽象,使之變成一個(gè)個(gè)數(shù)據(jù)。對(duì)這些數(shù)據(jù)的加工處理是代...
    sindri的小巢閱讀 16,845評(píng)論 13 85
  • 在程序開發(fā)中,數(shù)據(jù)層永遠(yuǎn)是程序的核心結(jié)構(gòu)之一。我們將現(xiàn)實(shí)事物進(jìn)行抽象,使之變成一個(gè)個(gè)數(shù)據(jù)。對(duì)這些數(shù)據(jù)的加工處理是代...
    帥不過oneS閱讀 622評(píng)論 0 1
  • iOS開發(fā)-數(shù)據(jù)持久化 原文鏈接 Sindri的小巢 在程序開發(fā)中,數(shù)據(jù)層永遠(yuǎn)是程序的核心結(jié)構(gòu)之一。我們將現(xiàn)實(shí)事物...
    人生路02閱讀 760評(píng)論 1 4
  • 前言: 在程序開發(fā)中,數(shù)據(jù)層永遠(yuǎn)是程序的核心結(jié)構(gòu)之一。對(duì)這些數(shù)據(jù)的加工處理是代碼中能體現(xiàn)技術(shù)水平的一大模塊,比如數(shù)...
    麥穗0615閱讀 1,472評(píng)論 3 22
  • 一、數(shù)據(jù)持久化概述 數(shù)據(jù)持久化就是數(shù)據(jù)的永久存儲(chǔ)。其本質(zhì)是將數(shù)據(jù)保存為文件,存到程序的沙盒中。 1、數(shù)據(jù)持久化的方...
    lilinjianshu閱讀 510評(píng)論 0 1