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 = ""