Arrays SwiftUI中的分组列表从swift文件导入数据

Arrays SwiftUI中的分组列表从swift文件导入数据,arrays,swiftui-list,xcode12,grouped-list,Arrays,Swiftui List,Xcode12,Grouped List,我可以使用以下代码在SwiftUI中创建分组列表: import SwiftUI struct ContentView: View { var body: some View { List { Section(header: Text("Freyr / Freya's Aett")) { } Section(header: Text("

我可以使用以下代码在SwiftUI中创建分组列表:

import SwiftUI

struct ContentView: View {
    var body: some View {
        List {
            Section(header: Text("Freyr / Freya's Aett")) {
                
            }
            Section(header: Text("Heimdall's Aett")) {
                
            }
            Section(header: Text("Tyr's Aett")) {
                
            }
            Section(header: Text("Additional Runes")) {
                
            }
        }.listStyle(GroupedListStyle())
    }
}
我有一个单独的swift文件,它将数据存储在数组中,但我无法像在故事板中使用以下代码时那样将其导入到我的列表中

import Foundation
import SwiftUI

struct Rune: Identifiable {
    var runeName: String
    var runeImage: String
    var runeDescription: String
    let id = UUID()
}

//MARK: - Runes Array Standard Orientation

var runeTitle = [["Freyr/Freya's Aett"], ["Heimdall's Aett"], ["Tyr's Aett"], ["Additional Runes"]]

let runesArray = [[Rune(runeName: "Fehu", runeImage: String(("Fehu")), runeDescription: "Description Goes Here")],

                   [Rune(runeName: "Hagalaz", runeImage: String(("Hagalaz")), runeDescription: "Description Goes Here")],

                  [Rune(runeName: "Tiwaz", runeImage: String(("Tiwaz")), runeDescription: "Description Goes Here")],

                  [Rune(runeName: "Blank Rune", runeImage: String(("Blank")), runeDescription: "Description Goes Here")]]

您只需要找到一种方法来识别每个部分中的内容。 这种特殊的方法效率很低,因为它贯穿
runesArray
中每个部分的每个项目,但是您可以可视化正在发生的事情,然后处理数据

import SwiftUI

struct SectionedList: View {
    var body: some View {
        List {
            Section(header: Text(runeTitle[0][0])) {
                ForEach(runesArray, id: \.id){rune in
                    if rune.runeTitle == runeTitle[0][0]{
                        Text(rune.runeName)
                    }
                }
            }
            Section(header: Text(runeTitle[1][0])) {
                ForEach(runesArray, id: \.id){rune in
                    if rune.runeTitle == runeTitle[1][0]{
                        Text(rune.runeName)
                    }
                }
            }
            Section(header: Text(runeTitle[2][0])) {
                ForEach(runesArray, id: \.id){rune in
                    if rune.runeTitle == runeTitle[2][0]{
                        Text(rune.runeName)
                    }
                }
            }
            Section(header: Text(runeTitle[3][0])) {
                ForEach(runesArray, id: \.id){rune in
                    if rune.runeTitle == runeTitle[3][0]{
                        Text(rune.runeName)
                    }
                }
            }
            //This is another way to do it.
            /*
            ForEach(0..<runeTitle.count){idx in
                Section(header: Text(runeTitle[idx][0])) {
                    
                    ForEach(runesArray, id: \.id){rune in
                        if rune.runeTitle == runeTitle[idx][0]{
                            Text(rune.runeName)
                        }
                    }
                }
            }
            */
        }.listStyle(GroupedListStyle())
    }
}
struct Rune: Identifiable {
    var runeName: String
    var runeImage: String
    var runeDescription: String
    var runeTitle: String
    let id = UUID()
}

//MARK: - Runes Array Standard Orientation

var runeTitle = [["Freyr/Freya's Aett"], ["Heimdall's Aett"], ["Tyr's Aett"], ["Additional Runes"]]

let runesArray = [Rune(runeName: "Fehu", runeImage: String(("Fehu")), runeDescription: "Description Goes Here", runeTitle: runeTitle[0][0]),
                  
                  Rune(runeName: "Hagalaz", runeImage: String(("Hagalaz")), runeDescription: "Description Goes Here", runeTitle: runeTitle[1][0]),
                  
                  Rune(runeName: "Tiwaz", runeImage: String(("Tiwaz")), runeDescription: "Description Goes Here", runeTitle: runeTitle[2][0]),
                  
                  
                  Rune(runeName: "Blank Rune", runeImage: String(("Blank")), runeDescription: "Description Goes Here", runeTitle: runeTitle[3][0])]
导入快捷界面
结构截面列表:视图{
var body:一些观点{
名单{
节(标题:文本(runeTitle[0][0])){
ForEach(runesArray,id:\.id){rune-in
如果rune.runeTitle==runeTitle[0][0]{
文本(rune.runeName)
}
}
}
节(标题:文本(runeTitle[1][0])){
ForEach(runesArray,id:\.id){rune-in
如果rune.runeTitle==runeTitle[1][0]{
文本(rune.runeName)
}
}
}
节(标题:文本(runeTitle[2][0])){
ForEach(runesArray,id:\.id){rune-in
如果rune.runeTitle==runeTitle[2][0]{
文本(rune.runeName)
}
}
}
节(标题:文本(runeTitle[3][0])){
ForEach(runesArray,id:\.id){rune-in
如果rune.runeTitle==runeTitle[3][0]{
文本(rune.runeName)
}
}
}
//这是另一种方法。
/*
ForEach(0。。