ios開發系列之根據字典建立模型

2021-07-05 03:27:51 字數 2435 閱讀 7221

我們可以利用kvc來實現字典轉模型的問題,但是kvc的使用是有條件的,由於kvc會將字典所有的鍵值對(key-value)賦值給模型對應的屬性,只有當字典的鍵值對個數和模型的屬性個數相等,並且屬性名必須和字典的鍵值對一樣時,才可以使用kvc.
必須注意的是,模型中的屬性和字典中的屬性必須一一對應.

plist檔案的基本結構:

@[

@,@ ……

]

(1)自定義乙個模型people類,繼承於nsobject

(2)在people.h中宣告與字典對應的屬性 以及乙個例項方法和乙個類方法

@property (nonatomic, copy)nsstring * name;

@property (nonatomic, assign)nsnumber * age;

@property (nonatomic, assign)nsnumber * idnumber;

- (instancetype)initwithdictionary:(nsdictionary *)dict;(重寫init方法)

+ (instancetype)peoplewithdictionary:(nsdictionary *)dict;(注意這裡的類方法名的第乙個單詞和模型的類名一致)

(3)在people.m中 實現這兩個方法

- (instancetype)initwithdictionary:(nsdictionary *)dict

return

self;

}+ (instancetype)peoplewithdictionary:(nsdictionary *)dict

這裡[self setvaluesforkeyswithdictionary:dict];是用kvc方法來實現的, 相當於用字典中的屬性一一賦值給model的對應屬性:self.name = dict[@"name"]; self.age = dict[@"age"]; self.idnumber = dict[@"idnumber"];

將模型存入陣列中:

viewcontroller.m中宣告乙個屬性陣列來存放模型資料

@property (nonatomic, strong)nsarray * peoples;
並實現peoples的getter方法來懶載入資料

#pragma mark - 懶載入資料

- (nsarray *) peoples

//將arraymodels賦值給_peoples

_peoples = arraymodels;

}return _peoples;

}

至此字典中的所有資料都存放在_peoples陣列中. 需要使用時 ,建立乙個模型型別物件 ,將_peoples中對應的資料取出賦值給該物件

plist檔案的基本結構:

@[

@,@,@,……]

title:a

},@,@,@,……]

title:b}……

]

首先, 根據car 的資料結構

@[

@,@,@……

]

建立乙個car模型類,基本方法步驟和上面的people模型類似,屬性為icon, name ,2個方法為

- (instancetype)initwithdictionary:(nsdictionary *)dict

return

self;

}+ (instancetype)carwithdictionary:(nsdictionary *)dict

然後, 把plist檔案的結構看成是

@[@,@

……]

建立乙個group模型類, 基本方法步驟和上面的people模型類似,屬性為cars, title , 2個方法為

- (instancetype)initwithdictionary:(nsdictionary *)dict

self

.cars = arraymodels;

}return

self;

}+ (instancetype)groupwithdictionary:(nsdictionary *)dict

最後在viewcontroller中 通過模型group來獲得字典中的資料,方法和上面的peoples類似.

iOS開發之字典資料建立模型步驟

1.在控制器屬性的 questions set方法中完成字典轉模型的操作 nsarray questions 3.賦值 questions questionarray 2.新建模型類clquestion 依據字典內容建立對應的成員變數 答案 property nonatomic,copy nsstr...

IOS開發系列之Swift UI Lab

import uikit class viewcontroller uiviewcontroller 這裡做個lab宣告 var examplelab uilabel override func viewdidload super.viewdidload 呼叫makeui makeui do any...

ios字典存bool iOS 開發之字典寫入檔案

在最近的開發中阿,遇到乙個問題,是我開始沒有注意到的問題,某個羨慕後期維護的過程中發現乙個bug,這個bug就是關於字典寫入檔案的。緣由是這樣的,我用字典寫入檔案的方法 bool result resultdic writetofile citylistdatapath atomically yes...