Jas*_*ain 0 firebase google-cloud-firestore swiftui
好的,我先介绍一下我是 SwiftUI 和编程的新手。我是一名用户体验设计师。但是,我正在尝试运行一个简单的 Firestore 查询并将结果返回到列表中。
我已经能够编写一个将结果成功写入控制台的函数,但我不知道如何访问函数中的信息,以便我可以在页面的主视图中使用它。
我已经开始了一个简单的视图,以便我可以专注于在列表中显示 Firestore 数据。这是我目前的准系统代码。
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)
}
}
Run Code Online (Sandbox Code Playgroud)
控制台显示:
“Reshment Outpost Holiday Sweets & Treats Fife & Drum Tavern L'Artisan des Glaces Shi Wasu ...等”
当然,主体在一个列表中只显示“Hello World”5 次。我将如何访问“venueEntry”中的值,以便我可以在列表元素中显示它?
我还包含了我的 Firestore 数据结构的图像。理想情况下,我想显示按它们所在的“venueArea”分组的场所。
为了更容易使用,我为您的场地创建了一个模型。请参阅以下代码段,了解如何在视图中显示数据。
您的型号:
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
}
}
Run Code Online (Sandbox Code Playgroud)
您的观点:
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))
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1121 次 |
最近记录: |