美文网首页
在swift 4.0中用系统方法setValuesForKeys

在swift 4.0中用系统方法setValuesForKeys

作者: Fade1992 | 来源:发表于2020-04-22 00:38 被阅读0次

    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 = ""
    
    @objcMembers
    class BaseGameModel: NSObject {
    

    转自于 https://blog.csdn.net/weixin_41493577/article/details/78899408

    相关文章

      网友评论

          本文标题:在swift 4.0中用系统方法setValuesForKeys

          本文链接:https://www.haomeiwen.com/subject/uypvihtx.html