在android開發(fā)中精拟,可用第三方的轉(zhuǎn)換庫如gson等燎斩。當然在ios也有一些庫如MJExtensiond等。在這里蜂绎,我簡單實現(xiàn)一下栅表。
一、先建一個model并且繼承NSObject,代碼如下:
classUser:NSObject{
var name:String?
var sex:String?
var age:Int=0
override func setValue(_value:Any?, forUndefinedKey key:String) {
}
}
二师枣、在控制器中進行測試
classTestViewController:UIViewController{
overridefuncviewDidLoad() {
super.viewDidLoad()
let dic = ["name":"張三","sex":"男","age":"20"]
let user =User()
user.setValuesForKeys(dic)
print("-轉(zhuǎn)換結(jié)果--",user.name!,"---",user.sex!,"---",user.age)
}
overridefuncdidReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
運行后可以看到
-轉(zhuǎn)換結(jié)果--張三---男--- 20
注意:
但是有個問題怪瓶,當我們的json數(shù)據(jù)字段多余我們的模型字段的時候就直接奔潰了(也就是說要一一對應,不然就報錯)践美。這樣的話顯然不是我們想要的洗贰,因為在實際開發(fā)中,我們都只會取我們想要的那部分數(shù)據(jù)陨倡,其他的我們并不需要,這個問題怎么解決的其實也簡單敛滋,只需要在我們的模型中重寫一個setValue方法就可以過濾掉沒有的字段了代碼如下:
classUser:NSObject{
varname:String?
varsex:String?
varage:Int=0
varno:String?
override func setValue(_value:Any?, forUndefinedKey key:String) {
}
}
重寫后我們在測試的那個字典中加入a這個字段再來測試一下
classTestViewController:UIViewController{
overridefuncviewDidLoad() {
super.viewDidLoad()
letdic = ["name":"張三","sex":"男","age":"20","no":"1000","a":"wx"]
letuser =User()
user.setValuesForKeys(dic)
print("-轉(zhuǎn)換結(jié)果--",user.name!,"---",user.sex!,"---",user.age,user.no!)
}
overridefuncdidReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
運行不報錯了,結(jié)果為:-轉(zhuǎn)換結(jié)果--張三---男--- 20 1000
這個就是簡單實現(xiàn)josn和model轉(zhuǎn)換的示例兴革,如有問題歡迎留言绎晃!