資料持久化 歸檔

2021-07-25 09:22:25 字數 1849 閱讀 3141

ios提供的資料持久化方式有:sqlitecoredata屬性列表、nsuserdefault物件歸檔。

這裡來簡單介紹下

ios開發

中的物件歸檔:

物件歸檔是將物件歸檔以檔案的形式儲存到磁碟中(也稱為序列化,持久化)使用的時候讀取該檔案的儲存路徑讀取檔案的內容(也稱為接檔,反序列化)

物件歸檔的檔案是保密的磁碟上無法檢視檔案中的內容,而屬性列表是明文的可以檢視)

物件歸檔有兩種方式:1、對foundat中物件進行歸檔     2、自定義物件歸檔

1、簡單物件歸檔

使用兩個類:nskeyeda richivnskeyedunarchiver

nsstr*homedirectori=nshomedirectori;  //獲取根目錄

nsstringhomepath=[homedirectoristringbya ppendingpathcomponent:@"自定義檔名,如test.archiver"];

nsa rrai*arrai=@[@"abc",@"123",@12];

boolflag=[nskeyeda richivarchiverootobject:arraitofile:homepath];

ifflag

讀取歸檔檔案的內容:

nsa rrai*arrai=[nskeyedunarchivunarchiveobjectwithfile:homepath];

nslog@"%@",arrai;

這樣就簡單了實現了將nsa rrai物件的歸檔和解檔。

但是這種歸檔方式有個缺點,就是乙個檔案只能儲存乙個物件,如果有多個物件要儲存的話那豈不是有n多個檔案,這樣不是很適合的所以有了下面這種歸檔方式。

2、自定義內容歸檔

歸檔:使用nsdata例項作為歸檔的儲存資料

新增歸檔的內容---使用鍵值對

完成歸檔

解歸檔:

從磁碟讀取檔案,生成nsdata例項

根據nsdata例項和初始化解歸檔例項

解歸檔,根據kei訪問value

nsstr*homedirectori=nshomedirectori;//獲取根目錄

nsstringhomepath=[homedirectoristringbya ppendingpathcomponent:@"自定義檔名,如test.archiver"];

nsmutabledata*data=[[nsmutabledataalloc]init];

nskeyeda rchiv*archiv=[[nskeyeda rchivalloc]initforwritingwithmutabledata:data];

[archivencodefloat:50forkey:@"age"];

[archivencodeobject:@"jack"forkey:@"name"];

[archivfinishencoding]; //結束新增物件到data中

[archivrelease];

[datawritetofile:homepath atomically:yes];//將data寫到檔案中儲存在磁碟上

ndata*content=[nsdatadatawithconenteoffile:homepath];

nskeyedunarchiv*unarchiv=[[nskeyedunarchivalloc]initforreadingwithdata:content];

floatag=[unarchivdecodefloatforkey:@"age"];

nsstr*name=[unarchivdecodeobjectforkey:@"name"];

資料持久化,歸檔,反歸檔

資料持久化的本質 將資料讀成檔案儲存在本地 沙盒機制 就是系統針對每個應用程式在本地生成的資料夾 名字隨機生成 對於不同的應用程式 不能訪問其他應用程式沙盒的內容 起到保護作用 1 documents 用來儲存長久儲存的資料 b perferences 儲存使用者的偏好設定 比如程式是否是第一次啟動...

iOS資料持久化 歸檔

歸檔 序列化 把物件轉為位元組碼,以檔案的形式儲存到磁碟上 程式執行過程中或者當再次開啟程式的時候,可以通過解歸檔 反序列化 還原這些物件。只要遵循了nscoding協議的物件都可以通過它實現序列化,由於絕大多數支援儲存資料的foundation和cocoa touch類都遵循了nscoding協議...

iOS 資料持久化方式 歸檔 反歸檔

那麼ios的資料化持久方式有哪些呢?1 屬性列表 plist檔案 nsuserdefault 2 歸檔 nskeyedarchiver 3 資料庫 sqlite,coredata,fmdb 第三方 今天重點說下歸檔和結檔的問題 歸檔的三種方式 1 對foundation框架的物件進行歸檔 2 對自定...