所以基本上我要做的是以键=值格式列出表视图中对象的所有属性。
但我希望这与对象的未来更改无关,因此如果稍后添加新属性,则不需要对我的代码进行任何更改。
到目前为止,我可以通过 Mirror 访问属性,但是当我尝试通过 value(forKey:) 访问属性时遇到问题,即使该类继承了 NSObject,它也会崩溃:
此类与键的键值编码不兼容
有些属性有效,而另一些则无效,我猜这是因为其中一些是私有的,而另一些是@objc 变量?
那么有没有办法预先验证可以通过 value(forKey:) 访问键(属性) - 所以它不会以崩溃结束,所以如果没有其他方法可以显示可访问属性的值?
更好的是,是否有另一种方式以动态方式访问给定对象的所有属性和值?(处理以后添加的属性)
代码片段:
let properties = Mirror(reflecting: currentUser).children.compactMap { $0.label }
if properties.count > 0 {
for property in properties {
if let test = currentUser[property] {
newData.append( (name: property, value: currentUser.value( forKey: property ).debugDescription) )
}
}
}