将Struct(遵守Codable协议)用JSONEncoder的encode转成Data,然后再用JSONSerialization反序列化成Dictionary对象。

/// 直接将Struct或Class转成Dictionary
protocol Convertable: Codable {}extension Convertable {/// 直接将Struct或Class转成Dictionaryfunc convertToDict() -> Dictionary<String, Any>? {var dict: Dictionary<String, Any>? = nildo {print("init student")let encoder = JSONEncoder()let data = try encoder.encode(self)print("struct convert to data")dict = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? Dictionary<String, Any>} catch {print(error)}return dict}
}struct Student: Convertable {var name: Stringvar age: Intvar classRoom: Stringinit(_ name: String, age: Int, classRoom: String) {self.name = nameself.age = ageself.classRoom = classRoom}
}let student = Student("zgpeace", age: 28, classRoom: "06242班")print(student.convertToDict() ?? "nil")

参考

https://a1049145827.github.io/2018/03/02/Swift-%E4%BB%8E%E9%9B%B6%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AAStruct%E6%88%96Class%E8%BD%ACDictionary%E7%9A%84%E9%9C%80%E6%B1%82/

Swift 5 从Model, Struct或Class转Dictionary相关推荐

  1. Swift 类似HandyJSON解析Struct

    Swift 类似HandyJSON解析Struct HandyJSON 从源码解析Struct 获取TargetStructMetadata 获取TargetStructDescriptor 实现Ta ...

  2. Swift中Class和Struct异同

    Swift 中类和结构体有很多共同点.共同处在于: 定义属性用于存储值 定义方法用于提供功能 定义下标操作使得可以通过下标语法来访问实例所包含的值 定义构造器用于生成初始化值 通过扩展以增加默认实现的 ...

  3. Beego 插入数据 cannot use non-ptr model struct

    func insertUser() {o := orm.NewOrm() //拿到句柄,操作数据库//准备要插入的数据user := models.User{}user.Name = "sd ...

  4. HandyJSON:Swift语言JSON转Model工具库

    背景 JSON是移动端开发常用的应用层数据交换协议.最常见的场景便是,客户端向服务端发起网络请求,服务端返回JSON文本,然后客户端解析这个JSON文本,再把对应数据展现到页面上. 但在编程的时候,处 ...

  5. 在Swift中如何使用C中的Struct

    swift 无法直接访问 c 语言的Struct.只能通过指针的方式访问. ///-----例子1开始------- The c Lib API : mycapi.h <code style=& ...

  6. Swift学习: 从Objective-C到Swift

    作者:@方秋枋(GitHub) 这篇文章是自己学习Swift的笔记与深化.希望这篇文章能够帮助已经有Objective-C经验的开发者更快地学习Swift.同时也品味到Swift的精妙之处. 结论放在 ...

  7. IOS中结构体(struct)

    IOS中之struct(结构体) 前言 struct的基本语法 struct 和class的区别 class和struct比较,优缺点? struct的优势 使用Struct和Protocol来实现m ...

  8. swift学习资料2022

    目录 String 与 NSString 的关系与区别 Swift字符串的Range截取 throws 和 rethrows 的用法与作用 fileprivate和internal修饰符 open与p ...

  9. Codable实现json转Model,是时候干掉HandyJSON了!

    自从开始使用Swift做项目,一直都在使用HandyJSON,不可否认,HandyJSON在Swift4.0以前是个好东西,也尝试过其它json转mode的工具,最终发现还是HandyJSON最好用. ...

  10. iOS开发之swift资料大全

    目录(?)[+] 版本:Swift github排名 https://github.com/trending,github搜索:https://github.com/search 主要工作说明:  1 ...

最新文章

  1. hrbustoj 2283 heap解题报告
  2. adodb.stream文件操作类
  3. 配置 SQL Server 2008 Email 发送以及 Job 的 Notification通知功能
  4. Javascript的变量作用域居然可以跨越多个函数!
  5. c++随机打乱数组_NumPy数组基本介绍
  6. wpfdiagram 学习 教学_李倩、吴欣歆:新高考背景下高中语文教学的三个转变
  7. 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告
  8. 【NOIP2004】【Luogu1088】火星人(枚举排列)
  9. Symfony1.4.11学习笔记(四):数据模型
  10. 网络协议:TCP连接管理
  11. 虚拟运营商人工服务器,四大必想之事:倒闭、价格、网络
  12. NetScaler SDWAN 的前世今生
  13. 机房收费系统个人重构版:暮然回首,灯火阑珊
  14. 拓端tecdat|R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
  15. 小白攻略(三):数学建模论文的写作
  16. linux 下安装小度wifi,Fedora/Ubuntu如何安装小度/360随身WIFI驱动
  17. matlab 半正定规划,半正定规划
  18. 27岁学前端开发,3年前端开发工资待遇
  19. 解决Android部分手机图片剪切返回崩溃问题
  20. 第二十三讲 常用技术标准【2021年软考-高级信息系统项目管理师】

热门文章

  1. php printf 和sprintf,深入浅析php中sprintf与printf函数的用法及区别
  2. 2021-02-02 安卓闪退问题
  3. select2根据传入的url参数动态添加option
  4. 理解position:relative 与 position:absolute
  5. 深入浅出Hadoop: 高效处理大数据
  6. QTP自动化测试最佳实践
  7. Chrome快捷键, Mac 下 Chrome 浏览器 快捷键
  8. NotifyIcon实现托盘程序
  9. css样式,层叠顺序属性z-index
  10. CheckBoxList 只能选2个选项