利用runtime進(jìn)行歸檔和反歸檔

項(xiàng)目中如果有個一個復(fù)雜對象需要進(jìn)行本地序列化的時候我們勢必要寫這樣的代碼:
#define SomeKey1@"somekey1"

#define Somekey2 @"somekey2"

#define Somekey3 @"somekey3"

//歸檔

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:self.some forKey:SomeKey1];

[aCoder encodeObject:self.CUSTSTATUS forKey:SomeKey2];

[aCoder encodeObject:self.PICTUREID forKey:SomeKey3];

}

// 解檔

- (id)initWithCoder:(NSCoder *)decoder

{

if(self = [super init]) {

self.some1 = [decoder decodeObjectForKey:SomeKey1];

self.some2 = [decoder decodeObjectForKey:SomeKey2];

self.some3 = [decoder decodeObjectForKey:SomeKey3];

}

returnself;

}

當(dāng)只有三個屬性的時候還比較簡單,但是如果更多呢,勢必需要寫重復(fù)的代碼.不要重復(fù),不要重復(fù)自己,千萬不要重復(fù)自己.所以我打算用runtime運(yùn)行時獲取類的所有屬性的這個特性完成歸檔和反歸檔.

具體代碼如下:

這樣就完成復(fù)雜對象的序列化.

使用起來也很放便,直接在你的model的.m文件中 寫入WHYCodingImplementation這個宏定義

然后下面是測試結(jié)果:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容