SwiftUI 中的两个 ForEach

Two ForEach in SwiftUI

我想在 SwiftUI 中制作两个循环。例如:

ForEach (chapterData) { chapter in

  ForEach (chapter.line) { line in 

     Text("\(line.text)")
  }
}

chapterData 是章节 ([Chapter]) 的 table:

struct Chapter: Codable, Identifiable { 
  let id:Int
  let line:[Line] 
} 

struct Line: Codable, Identifiable {
  let id: Int
  let text: String 
} 

我想获取 chapterData

中所有章节的 line.text

但是我无法编译这段代码,而且我认为不可能以这种方式执行两个 ForEach 循环。

有人可以帮助我吗?

我已经更改了您的章节 - 最好对任何 Collection 使用复数名称,因为它可以提高代码的可读性:

struct Chapter: Codable, Identifiable {
  let id:Int
  let lines: [Line]
}

您的 ForEach 语法有问题,您的第二个 ForEach 应该将 chapter.lines 作为其参数,因为这是实际列表。将外部 ForEach 包装在 VStackList 中也很重要。所以您的观点正文可能如下所示:

var body: some View {
        VStack {
            ForEach(chapterData) { chapter in
                ForEach(chapter.lines) { line in
                    Text(line.text)
                }
            }
        }
    }