iOS 對模型物件進行歸檔

2021-09-08 19:10:52 字數 1678 閱讀 2162

歸檔是指一種形式的序列化,專門編寫用於儲存資料的任何物件都應該支援歸檔。使用對模型物件進行歸檔的技術可以輕鬆將複雜的物件寫入檔案,然後再從中讀取它們。

只要在類中實現的每個屬性都是標量或者都是遵循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,對於我們自己建立的模型...