JHHK

欢迎来到我的个人网站
行者常至 为者常成

Mirror反射

目录

什么是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,特别是当你需要自定义序列化逻辑时。


行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.