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(这文章不错)
