我們可以利用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方法來懶載入資料
至此字典中的所有資料都存放在_peoples陣列中. 需要使用時 ,建立乙個模型型別物件 ,將_peoples中對應的資料取出賦值給該物件#pragma mark - 懶載入資料
- (nsarray *) peoples
//將arraymodels賦值給_peoples
_peoples = arraymodels;
}return _peoples;
}
plist檔案的基本結構:
首先, 根據car 的資料結構@[
@,@,@,……]
title:a
},@,@,@,……]
title:b}……
]
建立乙個@[
@,@,@……
]
car
模型類,基本方法步驟和上面的people模型類似,屬性為icon, name ,2個方法為
然後, 把plist檔案的結構看成是- (instancetype)initwithdictionary:(nsdictionary *)dict
return
self;
}+ (instancetype)carwithdictionary:(nsdictionary *)dict
建立乙個@[@,@
……]
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...