Два ForEach в SwiftUI - PullRequest
       10

Два ForEach в SwiftUI

0 голосов
/ 28 сентября 2019

Я хотел бы сделать два цикла в SwiftUI.Например:

ForEach (chapterData) { chapter in

  ForEach (chapter.line) { line in 

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

chapterData представляет собой таблицу главы ([Chapter]):

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

и

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

Я хотел бы получитьline.text из всех глав chapterData

, но я не могу скомпилировать этот код, и я думаю, что невозможно выполнить два цикла ForEach таким образом.

Может ли кто-нибудь мне помочь?

1 Ответ

1 голос
/ 28 сентября 2019

Я изменил вашу главу - лучше использовать множественные имена для любого 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)
                }
            }
        }
    }
...