テッド*_*テッド 3 arrays foreach swift swiftui
swiftUI 中的 ForEach 结构对于迭代数组以创建视图非常有用,但我想知道是否有办法同时迭代多个数组。我知道,如果在使用 for in 循环时使用 zip,则可以像这样实现:
for (height, label) in zip(heights, labels) {
print("\(height) : \(label)")}
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否可以使用 ForEach 来做到这一点。我试过了,但我似乎无法做到正确。我发现迭代两个数组的唯一方法是使用索引来下标每个数组,但这似乎不够迅速。
到目前为止我尝试过的是:
let heights:[CGFloat] = [20, 40, 100, 5, 70, 80, 30]
let labels = ["mon", "tue", "wed", "thu", "fri", "sat", "sun", ]
ForEach(zip(heights, labels), id: \.self) { (height, label) in
Text("\(height)")
Text(label)
}
Run Code Online (Sandbox Code Playgroud)
但没有喜悦,swiftUI 错误和以往一样神秘......感谢收到任何指示。
编辑: 我发现的一种让它工作的方法是做一个嵌套的 ForEach,比如:
ForEach(self.heights, id: \.self) { height in
Group {
Text("\(height)")
ForEach(self.labels, id: \.self) { label in
Text(label)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但同样,它似乎不是很迅速。
Asp*_*eri 12
这是可能的方法(使用 Xcode 11.3.1 测试并使用)
ForEach(Array(zip(heights, labels)), id: \.0) { item in
VStack {
Text("\(item.0)")
Text(item.1)
}
}
Run Code Online (Sandbox Code Playgroud)