如何遍历 SwiftUI 结构中的键?

Posted

技术标签:

【中文标题】如何遍历 SwiftUI 结构中的键?【英文标题】:How to loop through keys in struct for SwiftUI? 【发布时间】:2020-07-16 10:45:00 【问题描述】:

我很久以前做过 XCode,现在回来学习 SwiftUI。我正在尝试在 HStack 中呈现结构的数据。

结构如下所示:

struct Product: Hashable, Codable
    var column0: Int
    var column1: String
    var column2: String
    var column3: String
    var column4: String

在视图主体内部有这样的东西:

var pdt: Product
var body: some View 
        HStack 
             Text(pdt.column1)
             Text(pdt.column2)
        

以上方法可行,但我不想硬编码 column1column2,因为列数会有所不同。如何将 pdt 用作字典并循环遍历键以便显示所有列?

提前非常感谢!

【问题讨论】:

【参考方案1】:

这是一个可能的方法的演示(对于这个简单的案例) - 您可以反映属性并将它们映射到显示的值(对于自定义/复杂类型,这需要更多的努力,思路应该很清楚)。

var body: some View 
    let columnValues = Mirror(reflecting: pdt)
                          .children.map  "\($0.value)" 
    return HStack 
        ForEach(columnValues, id: \.self)  Text($0) 
    

【讨论】:

我必须说我对 SwiftUI 完全陌生,所以我可能会犯一个非常初学者的错误。我收到错误“未分类:Command CompileSwiftSources failed with a nonzero exit code”。 好的,我收回!我重新启动,现在它工作正常!谢谢! 如果结构中的变量是optionals会发生什么?我们如何打开它们?

以上是关于如何遍历 SwiftUI 结构中的键?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 中的 List 是不是复用类似于 UITableView 的单元格?

更改选项卡式视图栏颜色 SwiftUI

使用本地 JSON 中的键:值更改按钮/标签文本 - SwiftUI

显示 % forloop% 的键和值的 Django 模板:如何遍历模板中的字典?

按返回键“不”关闭软件键盘 - SwiftUI

Catalyst 'SwiftUI.AccessibilityNode' 不是已知的可序列化元素