歸檔是指一種形式的序列化,專門編寫用於儲存資料的任何物件都應該支援歸檔。使用對模型物件進行歸檔的技術可以輕鬆將複雜的物件寫入檔案,然後再從中讀取它們。
只要在類中實現的每個屬性都是標量或者都是遵循nscoding協議的某個類的例項,你就可以對整個物件進行完全歸檔。大多數的foundation和cocoa touch類 都遵nscoding協議,所以對於有大多數類來說,歸檔不太難。
遵循nscoding協議:
nscoding宣告了兩個方法,
- (void)encodewithcoder:(nscoder *)acoder;和- (nullable instancetype)initwithcoder:(nscoder *)adecoder;
第乙個是 將物件編碼到歸檔中,第二個則是對歸檔解碼,來建立乙個物件。
在bidfourlines中:
#import@inte***ce bidfourlines : nsobject @property (copy, nonatomic) nsarray *lines;
@end
#import"bidfourlines.h
"static nsstring * const klineskey = @"
klineskey";
@implementation
bidfourlines
#pragma mark - coding
- (id)initwithcoder:(nscoder *)adecoder
return
self;
}- (void)encodewithcoder:(nscoder *)acoder;
#pragma mark - copying
- (id)copywithzone:(nszone *)zone;
copy.lines =linescopy;
return
copy;
}@end
注:上面遵循了nscopying協議,遵循nscopying協議對於任何模型物件來說都是非常好的事情,nscopying協議中,有乙個copywithzone方法,可以用來複製物件。
在bidviewcontroller中:
#import"bidviewcontroller.h
"#import
"bidfourlines.h
"static nsstring * const krootkey = @"
krootkey";
@inte***ce
bidviewcontroller ()
@property (strong, nonatomic) iboutletcollection(uitextfield) nsarray *linefields;
@end
@implementation
bidviewcontroller
- (nsstring *)datafilepath
- (void
)viewdidload
}//後台通知
[[nsnotificationcenter defaultcenter]
addobserver:self
object}//
進入後台時 歸檔
IOS 物件歸檔
ios提供的資料持久化方式有 sqlite coredata 屬性列表 nsuserdefault 物件歸檔。這裡來簡單介紹下物件歸檔 物件歸檔是將物件歸檔以檔案的形式儲存到磁碟中 也稱為序列化,持久化 使用的時候讀取該檔案的儲存路徑讀取檔案的內容 也稱為接檔,反序列化 物件歸檔的檔案是保密的,在磁...
ios中 繼承物件模型的歸檔實現
之前專案中使用到了歸檔的技術,也用到了mjextension 但是問題是,這個公共庫遇到了無法歸檔的一些問題,讓人蛋疼不已,怎麼辦呢。對於不能歸檔的部分,職能手動歸檔,很是無語。查詢了一下原因 原來對於兩個模型,如何a繼承了b,那麼a有很大的情況是無法歸檔的!自己寫了。對於上述的a模型和b模來說,定...
使用runtime歸檔模型物件
在開發中經常需要對一些物件進行儲存,當然這是一些很輕量級的,我們首先會想到使用nsuserdefaults進行儲存,但是nsuserdefaults所能直接儲存的物件型別也是有限的,比如nsarray,nsdata,nsdictionary,nsnumber,nsstring,對於我們自己建立的模型...