首页 > 解决方案 > 如何显示多维数组?

问题描述

我有一个带有自定义类型的二维数组。

我想做类似的事情:

HStack {
    ForEach(2dArray) { x in
        VStack {
            ForEach(self.2dArray[x.index]) { y in

我遇到的主要问题是我不知道如何获取 x.index。

标签: swiftui

解决方案


所以我要说你应该这样做来迭代一个二维数组:

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 beta 在 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)")
    }
}

看起来像这样:


推荐阅读