IOS 物件歸檔

2021-06-18 23:25:54 字數 1757 閱讀 6423

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...