【发布时间】:2020-05-19 10:39:08
【问题描述】:
swiftUI 中的 ForEach 结构对于遍历数组以创建视图非常有用,但我想知道是否有一种方法可以同时遍历多个数组。我知道,如果您在使用 for in 循环时使用 zip,您可以像这样实现:
for (height, label) in zip(heights, labels) {
print("\(height) : \(label)")}
但是,我想知道是否可以使用 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)
}
但是没有乐趣,swiftUI 错误和以往一样神秘...... 任何指点都感激不尽。
编辑: 我发现让它工作的一种方法是做一个嵌套的 ForEach,比如:
ForEach(self.heights, id: \.self) { height in
Group {
Text("\(height)")
ForEach(self.labels, id: \.self) { label in
Text(label)
}
}
}
但同样,它似乎不是很迅速。
【问题讨论】:
-
您从 SwiftUI 得到的错误是什么?
-
完全不合时宜。它的意思是:无法推断通用参数“背景”。我知道这与实际问题无关,编译器错误只是用 swiftUI 敲击 atm。
标签: arrays swift foreach swiftui