swift 4.0 以前字典转model我们使用 setValuesForKeysWithDictionary 代码如下
class Status: NSObject{
//创建时间
var created_at:String?
//ID
var id:Int = 0
//信息内容
var text:String?
//来源
var source:String?
//配图
var pic_urls:[[String:AnyObject]]?
//字典转模型
init(dict:[String:AnyObject]) {
super.init()
setValuesForKeysWithDictionary(dict)
}
}
xcode升级到4.0以后发现系统方法改为了 setValuesForKeys,运行发现数据解析成功,但是转model的时候发现没有值
问题就是4.0后swift和oc区分的更严谨了导致定义的属性在这种情况下不能存储值, 解决办法如下
class Status: NSObject{
//创建时间
@objc var created_at:String?
//ID
@objc var id:Int = 0
//信息内容
@objc var text:String?
//来源
@objc var source:String?
//配图
@objc var pic_urls:[[String:AnyObject]]?
//字典转模型
init(dict:[String:AnyObject]) {
super.init()
setValuesForKeys(dict)
}
override func setValue(_ value: Any?, forKey key: String) {
///这句话很关键,一定要有
super.setValue(value, forKey: key)
}
}