Swift Json实例详细解析

2020-01-09 00:10:36丽君

为什么要写第二个函数呢?

场景:当我们Model内有其他的非基本类型的Model,比如其他自定义Model,Dictionary<String, Any>,Array<String>等,当这些Model 类型不匹配或者出错误时也会抛出异常,导致整个大Model解析失败。
覆盖decodeIfPresent<T>(_ type: T.Type, forKey key: K)可以避免这些场景。至此,当类型过程中出现解析的Optional类型出现不匹配时,我们要不是通过转换,要不就是给其赋值nil,避免了系统此时直接throw exception导致退出整个解析过程的尴尬。

为何不覆盖decode方法?decodeIfPresent可以返回Optional值,decode返回确定类型值。考虑到如果Model内如果定义的类型是No-Optional型,那么可以认为开发者确定该值必须存在,如果不存在Model很可能是错误的,所以直接fail。

完整扩展代码点我   (本地下载点我)

总结

Swift4.0 JSONDecoder确实为解析数据带来了极大的便利。使用方式上类似Objective-C下的JSONModel。但实际开发中还是需要一些改造才能更好地服务于我们。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU的支持。


注:相关教程知识阅读请移步到swift教程频道。