Swift的反射机制是基于一个叫 Mirror 的 struct 来实现的,其内部有如下属性和方法:

let children: Children   //对象的子节点。
displayStyle: Mirror.DisplayStyle? //对象的展示风格
let subjectType: Any.Type //对象的类型
func superclassMirror() -> Mirror? //对象父类的 mirror

使用样例:

样例1:输出实体对象的类名,属性个数,以及所有属性的属性名和属性值。
首先定义一个用户类:
//用户类
class User {
var name:String = "" //姓名
var nickname:String? //昵称
var age:Int? //年龄
var emails:[String]? //邮件地址
}

接着创建一个用户对象,并通过反射获取这个对象的信息:

//创建一个User实例对象
let user1 = User()
user1.name = "hangge"
user1.age = 100
user1.emails = ["hangge@hangge.com","system@hangge.com"] //将user对象进行反射
let hMirror = Mirror(reflecting: user1) print("对象类型:\(hMirror.subjectType)")
print("对象子元素个数:\(hMirror.children.count)") print("--- 对象子元素的属性名和属性值分别如下 ---")
for case let (label?, value) in hMirror.children {
print("属性:\(label) 值:\(value)")
}
控制台输出信息如下:  
 
原文:http://www.hangge.com/blog/cache/detail_976.html
 
相关链接:http://www.tuicool.com/articles/y6RrEbN(这文章不错)

最新文章

  1. #20145205 《Java程序设计》第3周学习总结
  2. wrHDL编译中软核代码初始化及编译耗时长的问题
  3. 【目录】Newlife XCode组件相关文章目录
  4. 单片机系统与标准PC键盘的接口模块设计
  5. 2017年开年的第一次比较大的安全事件: MongoDB “赎金事件”,如何看待互联网安全问题
  6. SQLServer存储过程自制数据字典
  7. python3 第二十五章 - comprehensions(推导式)
  8. itchat分析微信好友的个性签名
  9. Docker 管理工具 Portainer部署
  10. [转]SpringMVC+ Mybatis 配置多数据源 + 手动切换数据源
  11. golang schedule crash
  12. [UE4]Button
  13. vue-router总结2
  14. Python中的类(中)
  15. hadoop2.x 异常
  16. iOS开发中常用的数学函数
  17. memory_get_usage()查看PHP脚本使用内存
  18. Curl 及 Curl的使用介绍
  19. Web前端和后端开发的区别和要求
  20. iOS开发之使用AFN上传图片

热门文章

  1. codevs1501 二叉树最大宽度和高度
  2. 从炉石传说的一个自杀OTK说起
  3. C# 7.0 新特性1: 基于Tuple的“多”返回值方法
  4. Javascript中的循环变量声明,到底应该放在哪儿?
  5. python学习笔记整理——字典
  6. C# 多线程防止卡死
  7. Ueditor 上传图片 如何设置只显示 本地上传
  8. [转]java反射机制
  9. [转]oracle学习入门系列之五内存结构、数据库结构、进程
  10. 【CodeVS 1199】【NOIP 2012】开车旅行