iOS 中資料的高效解檔和歸檔

2021-07-29 17:56:44 字數 652 閱讀 9617

在ios中資料的儲存,無論是儲存資料庫(sqlite  支援的資料型別有五種null,整形(int),浮點型(real)文字字串(text),二進位制資料(blob) )還是存放在keychain , 或者是本地 plist 的檔案 ,資料都以nsdata(二進位制資料)進行儲存比較好,這樣就牽扯到我們每定義乙個新的型別,如果該資料需要義二進位制資料進行儲存時,必須進行歸檔和解檔 ,每一次都要每定義乙個新類都要進行一次歸檔和解檔的書寫,那有沒有通用的辦法呢?

上面的問題我們使用runtime來解決,在執行時,動態的獲取該類是否遵循nscoding 協議,動態的遵循該協議,並實現該協議的歸檔解檔方法,如題流程如圖:

如題**如下: 

以後對任何乙個物件轉化為nsdata 進行儲存和傳輸時,不用每次去手動的實現歸檔和解檔,只用呼叫該方法即可

+ (void

)addcodingprotocoltoobject:(class )class  傳入類名

由於歸檔解檔本身不支援可變的集合進行轉化為二進位制資料儲存,所以改方案也不支援

可變的集合

nsmutablearray  nsmutabledictionary的類的歸檔和解檔

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 在虛擬機器上,簡單的寫可以找到路徑,...

ios 歸檔解檔

如果你想讓儲存乙個自定義的物件,你就要讓這個自定義的物件去遵守這個協議,而且我們要在.m檔案中重寫 void encodewithcoder nscoder acoder 方法來告訴歸檔需要儲存哪些屬性,這個nscoder型別的物件和字典很相似。我們在自定義類的.m檔案中要實現這個方法。就比如我在p...