ios 應用實現快速的臨時快取之模型的自動歸檔

2021-07-05 09:39:56 字數 1502 閱讀 3532

上接第一章:

第二章 模型的自動歸檔實現

本節與上一節十分類似。

ios開發中,可以對實現歸檔協議的物件,進行歸檔和儲存在檔案中。

所謂的歸檔就是,講物件序列化為nsdata  然後儲存在本地檔案。

對於上一節的student 類來說,它的歸檔方法按照傳統的寫法如下。

-(void)encodewithcoder:(nscoder *)acoder

-(id)initwithcoder:(nscoder *)adecoder

上面這麼寫是沒問題的。

但是其實有更簡便的方法,並不用對每乙個model都採用這種方法寫其歸檔方法。

它採用的原理其實很簡單,就是採用runtime獲取到property list,然後遍歷

propert 進行decoder  和encoder 操作。

自動歸檔的**如下:

-(void)encodewithcoder:(nscoder *)acoder

while (currentclass && currentclass != [nsobject class])

}currentclass = class_getsuperclass(currentclass);

free(plist);

}return self;

}

現在仍然以這個student 類為例子。先定義好這個類,然後新增上述nsobject的擴充套件方法

然後初始化乙個student 物件,嘗試著將其進行歸檔化,然後對得到的資料進行接檔,**如下:

nsdictionary *dic =@;

//呼叫第一章的方法,將json轉化成模型

student *student = [student objectfromdic:dic];

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

nslog(@"%@",student.age);

nslog(@"%@",student.classname);

nslog(@"%@",student.grade);

nsdata *modeldata = [nskeyedarchiver archiveddatawithrootobject:student];

student *newstudent = [nskeyedunarchiver unarchiveobjectwithdata:modeldata];

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

nslog(@"%@",newstudent.age);

nslog(@"%@",newstudent.classname);

nslog(@"%@",newstudent.grade);

最終結果如下:

本地快取(快速載入) menifest之應用

應用manifest檔案 manifest檔案的基本格式 cache manifest為檔案的宣告 cache 需要快取的檔案 例項 cache manifest cache 快取theme.css和main.js這兩個檔案 theme.css main.js network 不被快取的檔案 cac...

從零開始的Devops 臨時快速實現

標籤 空格分隔 工作 git拉取和合併 合併 前最好新增 review機制。git伺服器,目前需要 由svn遷移到git。目前應該已有git伺服器,需要申請賬號許可權。將 由svn遷移到git。合併 後手動打tag,jenkins根據分支和tag進行打包。jenkins整合打包相關流程,渠道,開發配...

iOS開發 清理快取功能的實現

原文 移動應用在處理網路資源時,一般都會做離線快取處理,其中以快取最為典型,其中很流行的離線快取框架為sdwebimage。今天介紹的離線快取功能的實現,主要分為快取檔案大小的獲取 刪除快取檔案的實現。獲取快取檔案的大小 由於快取檔案存在沙箱中,我們可以通過nsfilemanager api來實現對...