swift

swift4 model.setValuesForKeys(di

2018-05-30  本文已影响0人  紫水依

swift4中字典转BookDataModel可以使用model.setValuesForKeys(dic),model类如下:

class BookDataModel: NSObject {
    
    var title:String = ""
    var subtitle:String = ""
    
    init(dic:[String:Any]) {
        super.init()
        self.setValuesForKeys(dic)// 字典转BookDataModel便捷方法
    }
    
    // 字典转BookDataModel,BookDataModel中没有的key重写不抛出异常
    override func setValue(_ value: Any?, forUndefinedKey key: String) {
        
    }

}

但是发现转model不成功,百度之后发现需要在class BookDataModel: NSObject之前加上@objcMembers修饰,然后就可以成功了。添加之后如下:

@objcMembers 
class BookDataModel: NSObject {
    
    var title:String = ""
    var subtitle:String = ""
    
    init(dic:[String:Any]) {
        super.init()
        self.setValuesForKeys(dic)// 字典转BookDataModel便捷方法
    }
    
    // 字典转BookDataModel,BookDataModel中没有的key重写不抛出异常
    override func setValue(_ value: Any?, forUndefinedKey key: String) {
        
    }

}

在需要的地方调用就可以了:

let model = BookDataModel(dic: book)

参考链接:
ios swift4之kvo的使用

上一篇 下一篇

猜你喜欢

热点阅读