gpt4 book ai didi

ios - 动态访问所有类属性值

转载 作者:行者123 更新时间:2023-11-30 11:24:50 33 4
gpt4 key购买 nike

所以基本上我想做的是以键=值格式列出 TableView 中对象的所有属性。

但我希望这独立于对象的 future 更改,这样如果以后添加新属性,我的代码就不需要更改。

到目前为止,我可以通过 Mirror 访问属性,但是当我尝试通过 value(forKey:) 访问属性时遇到问题,即使该类继承 NSObject 它也会崩溃:

this class is not key value coding-compliant for the key

有些属性有效,而其他属性则无效,我猜这是因为其中一些属性是私有(private)的,而其他属性是 @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) )
}
}
}

最佳答案

您可以做的就是使您的对象符合Encodable。这样,您可以简单地将其转换为 JSON(或其他格式),然后使 TableView 动态地从 JSON 中提取所有键和值。

只要将来对对象的任何更改都不会破坏 Encodable 合规性, TableView 仍然能够解析它收到的任何 JSON。

关于ios - 动态访问所有类属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50859548/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com