Swiftui 如何显示多维数组?
我有一个自定义类型的二维数组 我想做一些类似的事情:Swiftui 如何显示多维数组?,swiftui,Swiftui,我有一个自定义类型的二维数组 我想做一些类似的事情: HStack { ForEach(2dArray) { x in VStack { ForEach(self.2dArray[x.index]) { y in 我遇到的主要问题是,我不知道如何获取x.index。所以我想说,您应该这样做来迭代2D数组: var data = [[1,2,3],[4,5,6],[7,8,9]] ForEach(data.identified(by: \.sel
HStack {
ForEach(2dArray) { x in
VStack {
ForEach(self.2dArray[x.index]) { y in
我遇到的主要问题是,我不知道如何获取x.index。所以我想说,您应该这样做来迭代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)")
}
}
但是Xcode11Beta在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)")
}
}
看起来是这样的:
实际上,前面响应中的示例RPatel99 poset对我来说很好:
var data = [[1,2,3],[4,5,6],[7,8,9]]
struct ForTesting : View {
var body: some View {
VStack {
ForEach(data.identified(by: \.self)) { array in
ForEach(array.identified(by: \.self)) { element in
Text("\(element)")
}
}
}
}
}
但这是你的问题吗
struct ContentView : View {
var body: some View {
VStack {
ForEach(data.identified(by: \.self)) { array in
HStack{
ForEach(array.identified(by: \.self)) { element in
Text("\(element)")
}
}
}
}
}
}
哦…好的。我想我在跟随;我将尝试实现这一点。非常感谢。没问题!正如mimo所说,您可能想看看不适合我的代码是否适合您,因为Xcode 11的buggy编译器可以根据具体情况给出错误。如果它不起作用,那么你应该走丑陋的功能路线,至少直到你可以在苹果开始发布Xcode 11更新时清理它。谢谢你的信息!但这篇文章作为对我答案的评论可能比作为一个单独的答案更好。它很有效。我只需要将self.2dArray[x.index]更改为我从第一个ForEach获得的数组。2使我的类型能够使用hashable.self。谢谢你的帮助!谢谢事实上,我想把它作为一个评论,但还不能做评论
var data = [[1,2,3],[4,5,6],[7,8,9]]
struct ContentView : View {
var body: some View {
VStack {
ForEach(data, id: \.self) { array in
HStack{
ForEach(array, id: \.self) { element in
Text("\(element)")
}
}
}
}
}
}