swift4.0解決setValuesForKeys無法賦值的問題
阿新 • • 發佈:2019-01-07
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)
}
}