天天看點

Swift 4.0 中 setValuesForKeys() 無法指派問題

Swift4.0

網絡請求資料後,解析json資料,得到模型對象 使用Swift4.0,通過setValuesForKeys儲存字典資料,無法存儲

代碼如下:

class BaseGameModel: NSObject {


    // MARK:- 定義屬性
   var tag_name : String = ""
   var icon_url : String = ""

    // MARK:- 自定義構造函數
    override init() {

    }

    init(dict : [String : Any]) {
        super.init()
        setValuesForKeys(dict)
    }

    override func setValue(_ value: Any?, forUndefinedKey key: String) {
        print(key)
    }
}
           

明明有tag_name、icon_url 屬性,依然會走

override func setValue(_ value: Any?, forUndefinedKey key: String) { 
	print(key) 
}
           

方法,并列印出 key,值為 tag_name、icon_url

原因

在 swift3 中,編譯器自動推斷 @objc,換句話說,它自動添加 @objc

在 swift4 中,編譯器不再自動推斷,你必須顯式添加 @objc

解決

// MARK:- 定義屬性
   @objc var tag_name : String = ""
   @objc  var icon_url : String = ""