现在的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