Swift Mirror 用于反射的类
Mirror 是 Swift 提供的一个用于反射的类,我们介绍一下 他的简单用法。
struct Point {
let x: Int
let y: Int
let z: Int
}
let p = Point(x: 1, y: 2, z: 3)
let mirror = Mirror(reflecting: p)
for child in mirror.children {
print("label:\(child.label)")
print("value:\(child.value)")
}
// 输出
// label:Optional("x")
// value:1
// label:Optional("y")
// value:2
// label:Optional("z")
// value:3
Mirror 可以轻松将一个对象的属性和值反射出来。
但是 Swift 由于弱化了反射的功能,它无法赋值,你可以读,但是你不能写,即使写,也不是原来的那个对象了,因为它会给你个 copy 版本。 这也就是为什么 SwiftJSON 的库要用操作内存偏移来给对象赋值,因为没办法通过反射赋值。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论