SwiftUI 嵌套数组结构并在列表中显示

Posted

技术标签:

【中文标题】SwiftUI 嵌套数组结构并在列表中显示【英文标题】:SwiftUI Nested Array Struct and displaying in List 【发布时间】:2022-01-17 01:19:33 【问题描述】:

我正在尝试显示嵌套数组/结构中的值。这是我的结构定义:

import Foundation

// MARK: - Station
struct Station:Codable, Identifiable  
    let id, latitude, longitude, cp: String
    let pop, adresse, ville: String
    let prix: [Prix]
    
    // MARK: - Prix
    struct Prix: Codable, Identifiable
        let nom, id, maj, valeur: String
        
    

这是我的代码,只是为了证明数据在那里并且可以正常工作。

List 
                    
                    VStack(alignment: .leading) 
                        
                            ForEach (data)  item in
                            Text("id: \(item.id)")
                            Text("lon: \(item.longitude)")
                            Text("lat: \(item.latitude)")
                            
                            Text("\(item.prix[0].nom): \(item.prix[0].valeur)")
                            Text("\(item.prix[1].nom): \(item.prix[1].valeur)")
                            Text("\(item.prix[2].nom): \(item.prix[2].valeur)")
                            Text("\(item.prix[3].nom): \(item.prix[3].valeur)")
                        
                    
                
 

我想使用 ForEach 来显示 [Prix] 数组中的数据,因为项目的数量是可变的。

我尝试了很多 ForEach 与 Id 的组合,但没有但无法使其工作。

谢谢

【问题讨论】:

您是否尝试过第二次ForEach Prix 【参考方案1】:

尝试使用嵌套的ForEach

对于data 中的每个Station,都有一个Prix 数组。您应该使用ForEach 来迭代item.prix,这样您就不会出现索引超出范围异常(它将为item.prix 中的每个Prix 创建视图)

List 
                    
//VStack(alignment: .leading)                     
    ForEach (data)  item in
             Text("id: \(item.id)")
             Text("lon: \(item.longitude)")
             Text("lat: \(item.latitude)")
             ForEach (item.prix)  prix in 
                 Text("\(prix.nom): \(prix.valeur)")
             
    
//

【讨论】:

以上是关于SwiftUI 嵌套数组结构并在列表中显示的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 列出嵌套数组中的元素

获取嵌套数组 Firebase + SwiftUI

具有自定义数据结构的 SwiftUI 列表,每个循环都嵌套 [关闭]

如何在 SwiftUI 中使用 .fileimporter 保存音频文件并检索文件并在 SwiftUI 列表中显示它们的文件名?

SwiftUI 嵌套列表不出现

从公共 API 获取 JSON 以在 SwiftUI 的列表视图中呈现