Reflection和Mirror

现在的Swift虽然在反射方面相比Objective-C要弱得多,但还是存在一些和反射相关的内容的。 可以通过一个Mirror来获取某元素的一些信息,比如对象的所有属性。

struct Persons {
    let name: String
    let age: Int
}

let xiaomings = Persons(name: "xiaomings", age: 20)
let r = Mirror(reflecting: xiaomings)
print("xiaomings是\(r.displayStyle!)")
print("属性个数:\(r.children.count)")
for child in r.children {
    print("属性名:\(child.label!)----值:\(child.value)")
}

打印结果:

xiaomings是struct
属性个数:2
属性名:name----值:xiaomings
属性名:age----值:20

也可以用dump打印其镜像信息:

dump(xiaomings)

▿ __lldb_expr_63.Persons
  - name: "xiaomings"
  - age: 20

 

posted @ 2018-02-07 16:17  紫洁  阅读(233)  评论(0编辑  收藏  举报