博客> swift字典转模型学习笔记
swift字典转模型学习笔记
2019-05-22 01:45 评论:0 阅读:140 suifumin
swift 字典转模型 codable

typealias Codable = Decodable & Encodable 它其实是一个别名,具有编码和解码的功能。

这里可以使用它将json数据实现字典转模型。 1 (1)首先是最简单的形式 一个简单的字典转模型 定义一个person类

import UIKit class Person: NSObject,Codable { var name:String? var age:String? var height:Int

} 输出的结果是  WechatIMG4.png

(2)当返回的数据字段和我们的不一样的时候 例如我们把控制器中的dic中的height这个key 改为h let dic = ["name":"fm","age":"29","h":175] as [String : Any] 那么我们也需要在Person这个类中添加一个私有枚举  WechatIMG9.png 其中我们要在枚举中写出每一个属性的名字,一一对应,否则会转换失败,另外还要注意枚举的名字CodingKeys 是个固定的,不能更换,更换也会失效 输出的结果也是 WechatIMG8.png

  1. 模型中嵌套了一个模型 假如我们返回了一个这样的字典let dic = ["name":"wall","age":"22","h":170,"school":["name":"清华"] as [String:Any]] as [String : Any] 那么要想成功的进行模型转换,就需要在Person这个类中在加一个类,如下图  WechatIMG10.png 控制器中转换模型方法不需要做改动,输出结果是  WechatIMG11.png 3.模型中包含模型数组 加入我们有一个这样的数据 let smalldic1 = ["name":"small1"] let smalldic2 = ["name":"small2"] let smalldic3 = ["name":"small3"] let smalldic4 = ["name":"small4"] let smllarray = [smalldic1,smalldic2,smalldic3,smalldic4] let dic = ["name":"wall","age":"22","h":170,"school":["name":"清华"] as [String:Any],"test":smllarray] as [String : Any]

test对应的是一个字典数组,那么我们需要在Person类中在增加一个模型smalldic  WechatIMG13.png 控制器中的代码如图 WechatIMG14.png 输出的结果  WechatIMG15.png 以后就不用像OC还需要用框架进行字典转模型了。 ****注意的是每个模型都必须遵守codable这个协议

收藏
1
sina weixin mail 回到顶部