目录
什么是Mirror反射
Swift 的反射机制是通过 Mirror 类型实现的。Mirror 提供了一种在运行时检查和操作对象结构的方式,允许你查看对象的类型、属性和值。虽然 Swift 是一种静态类型语言,但反射提供了一些动态特性,使你能够在运行时检查对象的详细信息。
import Foundation
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
let person = Person(name: "John Doe", age: 30)
let mirror = Mirror(reflecting: person)
print("Type of person: \(mirror.subjectType)")
for child in mirror.children {
if let propertyName = child.label {
print("Property name: \(propertyName), value: \(child.value)")
}
}
获取父类信息
class Employee: Person {
var jobTitle: String
init(name: String, age: Int, jobTitle: String) {
self.jobTitle = jobTitle
super.init(name: name, age: age)
}
}
let employee = Employee(name: "Jane Doe", age: 28, jobTitle: "Developer")
let employeeMirror = Mirror(reflecting: employee)
if let superclassMirror = employeeMirror.superclassMirror {
print("Superclass type: \(superclassMirror.subjectType)")
for child in superclassMirror.children {
if let propertyName = child.label {
print("Superclass property name: \(propertyName), value: \(child.value)")
}
}
}
有什么用
1、方便调试
2、序列化和反序列化
反射可以用于将对象转换为字典或 JSON,特别是当你需要自定义序列化逻辑时。
行者常至,为者常成!