Итак, я собирался сказать, что вы должны сделать это для итерации 2D-массива:
var data = [[1,2,3],[4,5,6],[7,8,9]]
ForEach(data.identified(by: \.self)) { array in
ForEach(array.identified(by: \.self)) { element in
Text("\(element)")
}
}
но бета-версия XCode 11 по-прежнему очень глючная с SwiftUI и выводом типа, поэтому вы получаете ошибку компилятора, даже если она должна работать. Итак, сейчас вам придется разделить все на функции, которые может обрабатывать компилятор XCode, но со сложными типами, которые использует SwiftUI, это становится ужасно быстро. Вот пример:
var data = [[1,2,3],[4,5,6],[7,8,9]]
var body: some View {
doubleForEach(data: data)
}
func doubleForEach(data: [[Int]]) -> ForEach<IdentifierValuePairs<[[Int]], [Int]>,ForEach<IdentifierValuePairs<[Int], Int>, Text>> {
return ForEach(data.identified(by: \.self)) { row in
self.foreach(dataArr: row)
}
}
func foreach(dataArr: [Int]) -> ForEach<IdentifierValuePairs<[Int], Int>, Text> {
return ForEach(dataArr.identified(by: \.self)) { data in
Text("\(data)")
}
}
Что выглядит так: