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