SwiftUI 嵌套数组结构并显示在列表中
SwiftUI Nested Array Struct and displaying in List
我正在尝试显示嵌套数组/结构中的值。这是我的结构定义:
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
。
对于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)")
}
}
//}
}
我正在尝试显示嵌套数组/结构中的值。这是我的结构定义:
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
。
对于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)")
}
}
//}
}