上接第一章:
第二章 模型的自動歸檔實現
本節與上一節十分類似。
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來實現對...