码迷,mamicode.com
首页 > 编程语言 > 详细

Swift Swift中的反射

时间:2015-12-14 15:55:14      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

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

Swift Swift中的反射

标签:

原文地址:http://www.cnblogs.com/rayshen/p/5045133.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!