1. 程式人生 > >swift4.0解決setValuesForKeys無法賦值的問題

swift4.0解決setValuesForKeys無法賦值的問題

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) } }