Reflection和Mirror

Posted 紫洁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Reflection和Mirror的主要内容,如果未能解决你的问题,请参考以下文章

Reflection.Emit 与 CodeDOM

Java 代码审计 — 2. Reflection

在UWP中,我们可以使用动态编译和使用C#Reflection的成员调用动态编译和调用UWP中的新页面吗?

Planer Reflection

Planer Reflection

Planer Reflection