ios提供的資料持久化方式有:sqlite、coredata、屬性列表、nsuserdefault、物件歸檔。
這裡來簡單介紹下物件歸檔:
物件歸檔是將物件歸檔以檔案的形式儲存到磁碟中(也稱為序列化,持久化),使用的時候讀取該檔案的儲存路徑讀取檔案的內容(也稱為接檔,反序列化),
(物件歸檔的檔案是保密的,在磁碟上無法檢視檔案中的內容,而屬性列表是明文的,可以檢視)。
物件歸檔有兩種方式:1:對foundation中物件進行歸檔 2:自定義物件歸檔
1、簡單物件歸檔
使用兩個類:nskeyedarichiver、nskeyedunarchiver
nsstring *homedirectory =nshomedirectory();
//獲取根目錄
nsarray *array = @[@"abc", @"123", @12];
bool flag = [nskeyedarichiver archiverootobject:arraytofile:homepath];
if(flag) {
nslog(@"歸檔成功!");
讀取歸檔檔案的內容:
nsarray *array = [nskeyedunarchiver unarchiveobjectwithfile:homepath ];
nslog(@"%@", array);
這樣就簡單了實現了將nsarray物件的歸檔和解檔。
但是這種歸檔方式有個缺點,就是乙個檔案只能儲存乙個物件,如果有多個物件要儲存的話那豈不是有n多個檔案,這樣不是很適合的,所以有了下面這種歸檔方式。
2、自定義內容歸檔
歸檔:使用nsdata例項作為歸檔的儲存資料
新增歸檔的內容---使用鍵值對
完成歸檔
解歸檔:
從磁碟讀取檔案,生成nsdata例項
根據nsdata例項和初始化解歸檔例項
解歸檔,根據key訪問value
nsstring *homedirectory = nshomedirectory(); //獲取根目錄
nsmutabledata *data = [[nsmutabledata alloc] init];
nskeyedarchiver *archiver = [[nskeyedarchiver alloc]initforwritingwithmutabledata:data];
[archiver encodefloat:50 forkey:@"age"];
[archiver encodeobject:@"jack" forkey:@"name"];
[archiver finishencoding]; //結束新增物件到data中
[archiver release];
[data writetofile:homepath atomically:yes];//將data寫到檔案中儲存在磁碟上
ndata *content= [nsdata datawithconenteoffile:homepath ];
nskeyedunarchiver *unarchiver = [[nskeyedunarchiver alloc]initforreadingwithdata:content];
float age = [unarchiver decodefloatforkey:@"age"];
nsstring *name = [unarchiver decodeobjectforkey:@"name"];
好了,就這樣,自定義的歸檔和解歸檔的使用就這樣了。
iOS瘋狂詳解之複雜物件歸檔反歸檔
需求 對複雜物件進行歸檔 反歸檔 複雜物件 工程中 自定義的資料模型類 例如乙個person類 person.h person.h mysandbox created by long on 15 9 15.import inte ce person nsobject property nonatom...
iOS 對模型物件進行歸檔
歸檔是指一種形式的序列化,專門編寫用於儲存資料的任何物件都應該支援歸檔。使用對模型物件進行歸檔的技術可以輕鬆將複雜的物件寫入檔案,然後再從中讀取它們。只要在類中實現的每個屬性都是標量或者都是遵循nscoding協議的某個類的例項,你就可以對整個物件進行完全歸檔。大多數的foundation和coco...
iOS歸檔和解歸檔
ios最基本的歸檔和解歸檔的用法 main.m裡面需要實現 import import animal.h intmain intargc,const char argv return0 animal.h裡面需要實現 import import dog.h inte ce animal nsobjec...