建设部网站危房鉴定标准规定,p2p贷款网站开发,京美建站有代码吗,做外汇有哪些正规的网站前言 HandyJSON群里说建议不要再使用HandyJSON#xff0c;我最终选择了SmartCodable 来替换#xff0c;原因如下#xff1a;
首先按照 SmartCodable 官方教程替换
大概要替换的内容如图#xff1a; 详细的替换教程请前往#xff1a;使用SmartCodable 平替 HandyJSON
…前言 HandyJSON群里说建议不要再使用HandyJSON我最终选择了SmartCodable 来替换原因如下
首先按照 SmartCodable 官方教程替换
大概要替换的内容如图 详细的替换教程请前往使用SmartCodable 平替 HandyJSON
忽略key的解析
在 SmartCodable 中可以使用 IgnoredKey很方便的忽略解析 某个 Key 使用场景 在 model 中 加入了一个默认不支持解析的字段也不需要解析的时候就需要加IgnoredKey 来标识忽略解析 示例
class GetDailyPlansListModel: SmartCodable{
required init() { }
var should_study_time: String
var dayCompareType StudyDayCompare.today
}编译报错 Cannot automatically synthesize Encodable because StudyDayCompare does not conform to Encodable 修改
class GetDailyPlansListModel: SmartCodable{
required init() { }
var should_study_time: String
IgnoredKey
var dayCompareType StudyDayCompare.today
}项目中同时使用了WCDB 解决冲突
如果这个 model 同时要用来解析 json 和 存数据库那么 注意了: 解析只会解析 CodingKeys 里面定义的字段 最简单的适配自然是将你要解析的字段在 CodingKeys 中补全 还有一个思路将数据解析和数据缓存分别用一个 model 这个项目逻辑复杂的话会非常麻烦但如果不想存多余的字段也只有这样了
class GiftGoodsModel: SmartCodable,TableCodable {required init() {}var id:Int 0 // 礼包商品idvar ios_goods_id:String // ios商品id com.yuanlue.cxs.baijuyi,var name: String //庭院诗人-白居易,var price:Int 0 //商品价格var source_price:Int 0 //商品原价var pic:String //商品图片var recommend:Bool false //是否推荐//MARK: 凑单var good_id:Int 0 //商品id//MARK: 购物车var count:Int 0 //商品数量var gift_pack_id:Int? //礼包id字段可空有值是礼包无值是普通商品enum CodingKeys: String, CodingTableKey {typealias Root GiftGoodsModelstatic let objectRelationalMapping TableBinding(CodingKeys.self)case idcase ios_goods_idcase namecase pricecase source_pricecase piccase recommendcase good_idcase countcase gift_pack_id}
}遇到解析 model 就会稍微麻烦点要在CodingKeys 中将这个model key 加入WCDB 不支持这种类型就要去自定义字段映射。 详细教程前往 WCDB 官方文档查看Swift 自定义字段映射类型
总结
以上便是我使用SmartCodable 替换 HandyJSON中遇到的值得记录的地方。改动 460个地方替换时间 1.5 天就是数据库冲突的解决比较耗时如果没有跟我一样使用 WCDB 的话替换应该挺轻松地。 感谢您的阅读和参与HH思无邪愿与您一起在技术的道路上不断探索。如果您喜欢这篇文章不妨留下您宝贵的赞如果您对文章有任何疑问或建议欢迎在评论区留言我会第一时间处理您的支持是我前行的动力愿我们都能成为更好的自己