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

2021-08-20 03:34:36 字數 2646 閱讀 3725

那麼ios的資料化持久方式有哪些呢?

1:屬性列表(plist檔案),nsuserdefault

2:歸檔(nskeyedarchiver)

3:資料庫(sqlite,coredata,fmdb(第三方))

今天重點說下歸檔和結檔的問題

歸檔的三種方式:

1:對foundation框架的物件進行歸檔

2:對自定義的物件進行歸檔

3:對自定義內容進行歸檔

注意:歸檔生成的檔案是加密的

下邊舉簡單的例子分別說下歸檔的三種方式

#pragma mark---對自定義物件進行歸檔反歸檔----

- (void)archive

//反歸檔(由叫反序列化)的步驟

//對person類物件進行反歸檔時執行此方法.並對person類中想要進行反歸檔的所有屬性,進行反序列化操作

- (instancetype)initwithcoder:(nscoder *)adecoder

return self;

} */

person *per = [person new];

per.name = @"甲甲";

per.age = @"20";

per.gender = @"女";

//歸檔

//1:準備路徑

nsstring *path = nshomedirectory();

//2:準備儲存資料物件(用可變陣列進行接收)

nsmutabledata *data = [nsmutabledata new];

//3:建立歸檔物件

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

//4:開始歸檔

[archiver encodeobject:per forkey:@"person"];

//5:完成歸檔

[archiver finishencoding];

//6:寫入檔案

bool result = [data writetofile:path atomically:yes];

if (result)

//反歸檔

//1:獲取解檔路徑

nsdata *mydata = [nsdata datawithcontentsoffile:path];

//2:建立反歸檔物件

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

//3:反歸檔

person *aper = [person new];

aper = [unarchiver decodeobjectforkey:@"person"];

//4:結束歸檔

[unarchiver finishdecoding];

nslog(@"%@",aper.name);

}

#pragma mark----對foundation框架中的物件進行歸檔和反歸檔

- (void)fundationclass

//反歸檔

nsarray *newarray = [nskeyedunarchiver unarchiveobjectwithfile:path];

nslog(@"框架的結檔%@",newarray);

}

#pragma mark----對自定義的內容進行歸檔和反歸檔

- (void)customcontent

nsdata *newdata = [nsdata datawithcontentsoffile:path];

nskeyedunarchiver *unkeyed = [[nskeyedunarchiver alloc]initforreadingwithdata:newdata];

// nsstring *str1 = [unkeyed decodeobjectforkey:@"name"];

// nsstring *str2 = [unkeyed decodeobjectforkey:@"gender"];

// nsstring *str3 = [unkeyed decodeobjectforkey:@"age"];

person *pp = [person new];

pp.name = [unkeyed decodeobjectforkey:@"name"];

pp.gender = [unkeyed decodeobjectforkey:@"gender"];

pp.age = [unkeyed decodeobjectforkey:@"age"];

[unkeyed finishdecoding];

nslog(@"name:%@ gender:%@ age:%@",pp.name,pp.gender,pp.age);

// nslog(@"name:%@ gender:%@ age:%@",str1,str2,str3);

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

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

IOS之資料持久化(歸檔與反歸檔)

物件歸檔的檔案是保密的磁碟上無法檢視檔案中的內容,而屬性列表是明文的可以檢視 物件歸檔有兩種方式 1 對foundat中物件進行歸檔 乙個檔案只能儲存乙個物件 2 自定義物件歸檔 可以儲存多個物件 下面是自定義歸檔 類的.h檔案中遵守協議 宣告三個物件 import inte ce student ...

iOS資料持久化,寫入,歸檔和反歸檔

資料夾裡寫入字串 nsstring guyu 宇 guyu writetofile guyustr atomically yes encoding nsutf8stringencoding error nil nslog guyustr 把陣列,字典寫入到本地 nsarray sandbox 1 2...