ios中 繼承物件模型的歸檔實現

2021-07-03 11:04:21 字數 1181 閱讀 3754

之前專案中使用到了歸檔的技術,也用到了mjextension

但是問題是,這個公共庫遇到了無法歸檔的一些問題,讓人蛋疼不已,怎麼辦呢。

對於不能歸檔的部分,職能手動歸檔,很是無語。

查詢了一下原因:

原來對於兩個模型,如何a繼承了b,那麼a有很大的情況是無法歸檔的!

自己寫了。

對於上述的a模型和b模來說,定義如下:

#import #import "student.h"

@inte***ce coder : nsobject

@property (nonatomic,copy) nsstring *text;

@property (nonatomic,copy) nsstring *username;

@property (nonatomic,copy) nsstring *classid;

@property (nonatomic,strong) student *stu;

@end

它的歸檔要寫成如下形式:

- (void)encodewithcoder:(nscoder *)acoder

- (id)initwithcoder:(nscoder *)adecoder // ns_designated_initializer

b模型定義如下:

#import "coder.h"

@inte***ce coderchild : coder

@property (nonatomic, strong) nsstring *king;

@property (nonatomic, strong) nsstring *father;

@end

它的歸檔則要寫成如下的形式:

- (void)encodewithcoder:(nscoder *)acoder

- (id)initwithcoder:(nscoder *)adecoder // ns_designated_initializer

return self;

}

以上兩個類,子類要呼叫父類的 initwithcoder方法

否則負類中的屬性就無法被歸檔

iOS 對模型物件進行歸檔

歸檔是指一種形式的序列化,專門編寫用於儲存資料的任何物件都應該支援歸檔。使用對模型物件進行歸檔的技術可以輕鬆將複雜的物件寫入檔案,然後再從中讀取它們。只要在類中實現的每個屬性都是標量或者都是遵循nscoding協議的某個類的例項,你就可以對整個物件進行完全歸檔。大多數的foundation和coco...

JS中繼承的實現

js從誕生之初本就不是物件導向的語言。如何在js中實現繼承,總結而言會有四種寫法。function animal name function dog name,hobby this.hobby hobby let dog1 new dog xiaohei bone let dog2 new dog ...

iOS 物件的歸檔 解檔 runtime

ios 物件的歸檔 解檔 runtime 若要例項物件實現歸檔解檔,需要該類遵守nscoding協議,及以下協議方法 專案中以ycarchivebase類為例,可直接新增屬性使用 歸檔和接檔的操作以類方法實現如下 可自己建立管理類分離出去 archivefilepath 為檔案儲存路徑 void a...