Это похоже на разделы ключевых значений, верно?
Так вот как:
Это пример csvArray
, это может быть что угодно, но вы должны обновить остальныекод дуэт к исходному типу данных
let csvArray = [
[ "section0-key0": "section0-value0",
"section0-key1": "section0-value1"],
[ "section1-key0": "section1-value0",
"section1-key1": "section1-value1"],
[ "section2-key0": "section2-value0",
"section2-key1": "section2-value1"]
]
Это ваш код для одного словаря. но вместо этого будет жестко закодирован этот словарь:
struct SectionView : View {
@State var dict = [String: String]()
var body: some View {
let keys = dict.map{$0.key}
let values = dict.map {$0.value}
return ForEach(keys.indices) {index in
HStack {
Text(keys[index])
Text("\(values[index])")
}
}
}
}
И это построитель списка, связанный с исходным массивом. Я использовал разделы для значимости структуры данных.
struct ContentView: View {
var body: some View {
List {
ForEach(csvArray, id:\.self) { dict in
Section {
SectionView(dict: dict)
}
}
}
}
}
Обратите внимание, что вы не можете передать порядок значения ключа в словаре. Поэтому я предлагаю вам сделать sort
перед заполнением списка или использовать другую структуру данных, например class
или struct
вместо простого словаря.