swift4 model.setValuesForKeys(dic)转model不成功的解决办法

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的使用

你可能感兴趣的:(swift4 model.setValuesForKeys(dic)转model不成功的解决办法)