利用runtime進行歸檔解檔

2021-07-28 14:48:56 字數 1423 閱讀 3552

做過ios開發的應該都知道資料的本地化的方式,其中歸檔就是其中的一種。說實話,在本人在專案中並不是很常用歸檔來進行資料的本地儲存。今天之所以寫這篇部落格是因為最近了解到原來我們還能利用runtime進行歸檔和解檔。

先來看一下我們之前的歸檔、解檔**:

例如我們要對person這個擁有name和age屬性的類的某個物件進行歸檔,其中person類中的**:

#import

"person.h"

@inte***ce

person

()<

nscoding

>

@end

@implementation

person

- (void

)encodewithcoder:(

nscoder

*)acoder

- (instancetype

)initwithcoder:(

nscoder

*)coder

return

self;

} @end

進行歸檔和解檔的**:

- (ibaction

)writeaction:(

id)sender

- (ibaction

)readaction:(

id)sender

利用runtime進行歸檔、解檔的歸檔、解檔**和普通的解檔、歸檔**一樣,不一樣的地方就是person類中的**:

#import

"person.h"

// 引入執行時標頭檔案

#import

@inte***ce

person

()<

nscoding

>

@end

@implementation

person

- (void

)encodewithcoder:(

nscoder

*)acoder }

- (nullable

instancetype

)initwithcoder:(

nscoder

*)adecoder }

return

self;

} @end

看起來好像利用runtime的**反而更多了,其實不然。如果某個類的屬性特別多,假設person這個類有十個屬性,那麼我們利用之前的方式,person中的**就會很多而且都是一些重複的**。而我們在使用runtime之後不管我們要進行歸檔的某個類有多少個屬性,這個類中的**都是一樣的多。

解讀利用runtime歸檔person中的**:

利用runtime中的某些方法我們獲取某個類的所有屬性個數以及屬性名稱,然後利用了for迴圈對類中的所有屬性進行歸檔、解檔的操作。同時還利用到了kvc設定值到屬性上面。

iOS 物件的歸檔 解檔 runtime

ios 物件的歸檔 解檔 runtime 若要例項物件實現歸檔解檔,需要該類遵守nscoding協議,及以下協議方法 專案中以ycarchivebase類為例,可直接新增屬性使用 歸檔和接檔的操作以類方法實現如下 可自己建立管理類分離出去 archivefilepath 為檔案儲存路徑 void a...

iOS 歸檔解檔

開發過程中有時需要儲存一些輕量級的資料,對於ios提供的幾種資料儲存方式在這時最合適當屬物件歸檔 nscoding 但是將物件資料進行歸檔解檔時候需要實現兩個方法 encodewithcoder和initwithencoder。encodewithcoder 編碼 initwithcoder 解碼使...

iOS 歸檔 解檔

1.新建類datacache 歸檔 void cachewithdata id data withfile nsstring file 解檔 id archivewithfile nsstring file 2.使用 儲存路徑 college mouth.arc 在虛擬機器上,簡單的寫可以找到路徑,...