好的,我将以我对SwiftUI和编程的新手这个事实作为开场白。我是UX的设计师。但是,我试图运行一个简单的Firestore查询,并将结果返回到列表中。
我已经成功地编写了一个将结果写入控制台的函数,但是我不知道如何访问函数中的信息,以便在页面的主视图中使用它。
我已经启动了一个简单的视图,这样我就可以集中精力在列表中显示Fi还原数据。这是我目前的基本代码。
import SwiftUI
import FirebaseFirestore
struct FestivalListFB: View {
let db = Firestore.firestore()
func getVenues() {
let db = Firestore.firestore()
db.collectionGroup("Venues").getDocuments() {(querySnapshot, err) in
if let err = err {
print("Error getting documents \(err)")
} else {
for document in querySnapshot!.documents {
guard let venueEntry = document.get("venueTitle") as? String else {
continue
}
print(venueEntry)
}
}
}
}
var body: some View {
VStack {
List(0 ..<5) { item in
Text("Hello, World!")
}
}.onAppear(perform: getVenues)
}
}控制台显示:
“点缀前哨假日小吃&款待法夫&鼓酒馆L‘’Artisan des Glaces世华苏...etc”
当然,身体只在一个列表中显示5次"Hello“。如何访问"venueEntry“中的值,以便在list元素中显示它?
我还包括了我的Fi还原数据结构的图像。理想情况下,我想展示按"venueArea“分类的场馆。

发布于 2019-12-06 16:33:39
为了更方便的使用,我为你做了一个模型。请参阅下面的片段,如何在视图中显示数据。
你的模特:
class VenueObject: ObservableObject {
@Published var venueID: String
@Published var venueTitle: String
@Published var venueArea: String
init(id: String, title: String, area: String) {
venueID = id
venueTitle = title
venueArea = area
}
}你的观点:
struct FestivalListFB: View {
@State var data: [VenueObject] = []
let db = Firestore.firestore()
var body: some View {
VStack {
ForEach((self.data), id: \.self.venueID) { item in
Text("\(item.venueTitle)")
}
}.onAppear {
self.getVenues()
}
}
func getVenues() {
// Remove previously data to prevent duplicate data
self.data.removeAll()
self.db.collectionGroup("Venues").getDocuments() {(querySnapshot, err) in
if let err = err {
print("Error getting documents \(err)")
} else {
for document in querySnapshot!.documents {
let id = document.documentID
let title = document.get("venueTitle") as! String
let area = document.get("venueArea") as! String
self.data.append(VenueObject(id: id, title: title, area: area))
}
}
}
}
}https://stackoverflow.com/questions/59216575
复制相似问题