如何在SwiftUI中将真实数据(而非testdata)附加到列表?

时间:2019-07-30 12:33:47

标签: arrays swift swiftui

我正在使用带有ContentView和DetailView的SwiftUI创建一个相当简单的列表应用程序。

但是,在我所看到的所有教程中,传递给两个视图的数据源只是“ testData”,而数据源仅在#if DEBUG部分中定义。

如何在ContentView自身中定义应该从哪个数组加载数据?

我已经创建了多个数据数组,但是我不知道在#if DEBUG之外的地方实际可以访问此数据。

import SwiftUI

 struct ContentView : View {
    @ObjectBinding var store = GrapeStore()

    var body: some View {
        NavigationView {
            List {
                ForEach(store.grapes) { grape in
                GrapeCell(grape: grape)
                }
        }
        .navigationBarTitle("Wine grapes")
        .navigationBarItems(trailing: EditButton())
        .listStyle(.grouped)
    }

}

}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
    Group {
        ContentView(store: GrapeStore(grapes: AGrapes))

        ContentView(store: GrapeStore(grapes: testData))
            .environment(\.colorScheme, .dark)

    }
}
}
#endif

struct GrapeCell : View {
let grape: Grape

var body: some View {
    return NavigationLink(destination: GrapeDetail(grape: grape)) {
        Image(systemName: "photo")

        VStack(alignment: .leading) {
            Text(grape.name)
            Text("\(grape.type) grape")
                .font(.subheadline)
                .foregroundColor(.secondary)
        }
    }
}
}

我设法从ACGrapes和testData数组中提取数据,但这仅在预览中。我该如何决定应实际提取哪些数据?

1 个答案:

答案 0 :(得分:0)

您还必须从项目的场景委托文件中传递数据。