我想在SwiftUI中进行两个循环。例如:
ForEach (chapterData) { chapter in
ForEach (chapter.line) { line in
Text("\(line.text)")
}
}
sectionData是Chapter([Chapter])的表:
struct Chapter: Codable, Identifiable {
let id:Int
let line:[Line]
}
和
struct Line: Codable, Identifiable {
let id: Int
let text: String
}
我想获取ChapterData中所有章节的line.text
但是我无法编译这段代码,我认为不可能以此方式做两个ForEach循环。
有人可以帮我吗?
答案 0 :(得分:2)
我已经更改了您的章节-最好对任何Collection
使用复数名称,因为它可以提高代码的可读性:
struct Chapter: Codable, Identifiable {
let id:Int
let lines: [Line]
}
您的ForEach语法有问题,您的第二个ForEach应该使用Chapter.lines作为其参数,因为这是实际列表。将外部ForEach包装在VStack
或List
中也很重要。因此,您的视图正文可能如下所示:
var body: some View {
VStack {
ForEach(chapterData) { chapter in
ForEach(chapter.lines) { line in
Text(line.text)
}
}
}
}