Структура ForEach в swiftUI действительно полезна для перебора массива для создания представлений, но мне интересно, есть ли способ перебирать несколько массивов одновременно. Я знаю, что если вы используете zip, когда вы используете for в l oop, вы можете добиться этого следующим образом:
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 такие же криптовые c, как и раньше ..... Любые указатели с благодарностью получены.
Редактировать: Один из способов получить его Работа, которую я нашел, заключается в создании вложенного ForEach, например:
ForEach(self.heights, id: \.self) { height in
Group {
Text("\(height)")
ForEach(self.labels, id: \.self) { label in
Text(label)
}
}
}
Но, опять же, это не кажется очень быстрым.