歸檔與反歸檔

2021-07-12 03:16:26 字數 1551 閱讀 5414

建立一對.h&.m檔案nsobject

.h中遵守nscoding協議+定義屬性

在.m檔案中
//反序列比

-(id)initwithcoder:(nscoder *)adecoder

return self;

}//序列比

-(void)encoderwithcoder:(nscoder *)acoder

在需要使用的地方(.m)使用呼叫

//歸檔

//person物件-> nsdata -> writetofile

//建立物件

person *person = [person new];//new 和alloc一樣

person.name = @"dharni";

person.age = 25;

//可變資料 歸檔過程

nsmutabledata *muldata = [nsmutabledata data];

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

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

[archiver finishencoding];

//寫入檔案

[muldata writetofile:persondatapath atomically:yes];

nslog(@"persondatapath_____%@",persondatapath);

//反歸檔

//從檔案裡邊讀取 --> nsdata --> person物件

nsdata *persondata = [nsdata datawithcontentsoffile:persondatapath];

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

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

nslog(@"name______%@ age_________%ld",person1.name,person1.age);

另一種方法:

//儲存簡單資料

nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];

[defaults setobject:@"123" forkey:@"username"];

nslog(@"ker====%@",[defaults objectforkey:@"username"] );

歸檔以及反歸檔

歸檔和反歸檔 複雜的物件我們並不能通過writetofile型別的方法寫入到檔案中。這裡的複雜物件指的是在foundation框架內部存在的資料類,這個負載物件至少包含有乙個例項物件 如果想要進行歸檔和反歸檔操作,則必須遵守 協議 我們在歸檔和解檔操作時,每乙個需要乙個鍵.並且歸檔時是什麼鍵,那麼解...

歸檔, 反歸檔, 清除快取

1.寫巨集的時候可以建乙個只有header的標頭檔案 2.pragma mark 如果想要實現歸檔和反歸檔的操作需要簽訂乙個協議nscoding void encodewithcoder nscoder acoder id initwithcoder nscoder adecoder return ...

IOS開發中的歸檔與反歸檔

歸檔 是物件的 一種序列化 方式,對模型物件進 行歸檔 的技術可以輕鬆將複雜的物件寫 入 檔案,然後再從 檔案 中讀取它們。要求類中要進 行歸檔的屬性或者成員變數是基本資料類 型 如 int或 float 等 或者符合 nscoding 協議的某個類 的物件 如 nsstring 或nsarray ...