在swift 4.0中用系统方法setValuesForKeys()赋值问题

来源:互联网 发布:伦纳德官方体测数据 编辑:程序博客网 时间:2024/06/15 01:20

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

还有一种更简单的方法,不必一个一个属性的添加,在类名前面加@objcMembers

解决

    // MARK:- 定义属性   @objc var tag_name : String = ""   @objc var icon_url : String = ""

参考

在swift 4.0中用系统方法setValuesForKeys()赋值问题

http://blog.csdn.net/dazhaoDai/article/details/78585415?locationNum=1&fps=1


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新昌人才网 新昌旅游 新昌在哪里 新昌中医院 新昌信息 新昌旅游景点大全 新昌玻璃栈道 新昌大佛寺风景名胜区 新昌天姥论坛闲言碎语 新昌县属于哪个市 浙江新昌大佛寺 新昌旅游攻略 新昌大佛寺旅游 新昌玻璃栈道风景区 新昌信息港闲言碎语 新昌县人民医院 新昌千丈幽谷旅游 天姥论坛 浙江信息港 河口市 新星全运会 超新星 超新星纪元 炫金超新星 11超新星 新星运动会 深圳新星 超新星11人 小新星教育 超新星爆炸 新星农场 东方新星 维拉新星 韩娱超新星 超新星爆发 新星学校 新星宇集团 新星药房 新星技校 新星中学 新星房车