iOS 資料儲存 02歸檔多個物件

2021-07-02 18:55:24 字數 2196 閱讀 5252

1、nsdata

1.介紹

使用archiverootobject:tofile:方法可以將乙個物件直接寫入到乙個檔案中,但有時候可能想將多個物件寫入到同乙個檔案中,那麼就要使用

nsdata

來進行歸檔物件

nsdata

可以為一些資料提供臨時儲存空間,以便隨後寫入檔案,或者存放從磁碟讀取的檔案內容。可以使用

[

nsmutabledata

data]

建立可變資料空間

2.範例

1. 歸檔(編碼)

// 新建一塊可變資料區

nsmutabledata *data = [nsmutabledata data];

// 將資料區連線到乙個nskeyedarchiver物件

nskeyedarchiver *archiver = [[[nskeyedarchiver alloc] initforwritingwithmutabledata:data] autorelease];

// 開始存檔物件,存檔的資料都會儲存到nsmutabledata中

[archiver encodeobject:person1 forkey:@"person1"];

[archiver encodeobject:person2 forkey:@"person2"];

// 存檔完畢(一定要呼叫這個方法)

[archiver finishencoding];

// 將存檔的資料寫入檔案

[data writetofile:path atomically:yes];

2. 恢復(解碼)

// 從檔案中讀取資料

nsdata *data = [nsdata datawithcontentsoffile:path];

// 根據資料,解析成乙個nskeyedunarchiver物件

nskeyedunarchiver *unarchiver = [[nskeyedunarchiver alloc] initforreadingwithdata:data];

person *person1 = [unarchiver decodeobjectforkey:@"person1"];

person *person2 = [unarchiver decodeobjectforkey:@"person2"];

// 恢復完畢

[unarchiver finishdecoding];

3.深賦值

// 臨時儲存person1的資料

nsdata *data = [nskeyedarchiver archiveddatawithrootobject:person1];

// 解析data,生成乙個新的person物件

student *person2 = [nskeyedunarchiver unarchiveobjectwithdata:data];

// 分別列印記憶體位址

IOS 物件歸檔

ios提供的資料持久化方式有 sqlite coredata 屬性列表 nsuserdefault 物件歸檔。這裡來簡單介紹下物件歸檔 物件歸檔是將物件歸檔以檔案的形式儲存到磁碟中 也稱為序列化,持久化 使用的時候讀取該檔案的儲存路徑讀取檔案的內容 也稱為接檔,反序列化 物件歸檔的檔案是保密的,在磁...

iOS開發之APP USER物件儲存歸檔

void forgetpsdaction completion null 這個方法啊,頁面保證釋放 頁面迴圈跳轉,若有頁面不進行釋放的話則會導致迴圈引用 2.就忘記密碼和註冊頁面來看也就是相互之間可以跳轉到登入頁面去。3.一旦登入成功,這時候後台伺服器回返回乙個使用者的所有資訊的json或者其他型別...

iOS開發歸檔儲存

ios做儲存的時候,陣列裡面放nsstring nsnumber nsdata等可以直接寫入檔案,但是我們自定義的類物件放入陣列中就不能直接寫入檔案。原因是上述的類實現了協議,該協議有兩個方法 對物件進行歸檔的時候其實就是訪問物件的屬性 進行編碼的時候會呼叫,做儲存操作的時候會呼叫這個方法 void...