「
歸檔」
是物件的⼀一種序列化⽅方式,對模型物件進⾏行歸檔 的技術可以輕鬆將複雜的物件寫⼊入⽂檔案,然後再從⽂檔案 中讀取它們。
要求類中要進⾏行歸檔的屬性或者成員變數是基本資料類 型(如
int或
float
等)或者符合
nscoding
協議的某個類 的物件(如
nsstring
或nsarray
等)。
原理:將複雜物件轉換為
nsdata
,然後寫⼊入到硬碟。 為了讀取的時候恢復寫⼊入資料,需要對寫⼊入資料進⾏行編 碼和解碼
自定義類的物件要實現歸檔,該類需要確認
nscoding
協議,並且實現協議中的兩個⽅方法:
-encodewithcoder:
歸檔編碼時呼叫
-initwithcoder:
反歸檔解碼時呼叫
歸檔類:
nskeyedarchiver
反歸檔類:
nskeyedunarchiver
//自定義兩個自定義類成員變數
p1=[[lpfperson alloc]initwithname:@"
張三" age:54];p2=[[lpfperson alloc]initwithname:@"
李四" age:43];
//歸檔
//獲取要將data儲存的位址
nsstring *str=[nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];nsmutabledata *data=[[nsmutabledata alloc]init];nskeyedarchiver *archiver=[[nskeyedarchiver alloc]initforwritingwithmutabledata:data];[archiver encodeobject:p1 forkey:@"p1key"];[archiver encodeobject:p2 forkey:@"p2key"];[archiver finishencoding];
//反歸檔
//獲取data資料儲存位址
nsstring *str=[nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];
//lpfperson *per1 =(lpfperson*)[unarchiver decodeobjectforkey:@"p1key"];lpfperson *per2=(lpfperson *)[unarchiver decodeobjectforkey:@"p2key」];
優點:功能比普通⽂檔案儲存⽅方式相對強⼤大,解決了自定義類的儲存問題。
缺點:操作略微複雜,查詢資料不⽅方便(不能直接查詢某個物件的屬性,⽽而是需要把所有歸檔物件都讀出來然後再去找屬性)
歸檔與反歸檔
建立一對.h m檔案nsobject h中遵守nscoding協議 定義屬性 在.m檔案中 反序列比 id initwithcoder nscoder adecoder return self 序列比 void encoderwithcoder nscoder acoder 在需要使用的地方 m 使...
IOS之資料持久化(歸檔與反歸檔)
物件歸檔的檔案是保密的磁碟上無法檢視檔案中的內容,而屬性列表是明文的可以檢視 物件歸檔有兩種方式 1 對foundat中物件進行歸檔 乙個檔案只能儲存乙個物件 2 自定義物件歸檔 可以儲存多個物件 下面是自定義歸檔 類的.h檔案中遵守協議 宣告三個物件 import inte ce student ...
iOS 資料持久化方式 歸檔 反歸檔
那麼ios的資料化持久方式有哪些呢?1 屬性列表 plist檔案 nsuserdefault 2 歸檔 nskeyedarchiver 3 資料庫 sqlite,coredata,fmdb 第三方 今天重點說下歸檔和結檔的問題 歸檔的三種方式 1 對foundation框架的物件進行歸檔 2 對自定...