首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI -简单的固定查询显示结果

SwiftUI -简单的固定查询显示结果
EN

Stack Overflow用户
提问于 2019-12-06 16:05:53
回答 1查看 1.5K关注 0票数 0

好的,我将以我对SwiftUI和编程的新手这个事实作为开场白。我是UX的设计师。但是,我试图运行一个简单的Firestore查询,并将结果返回到列表中。

我已经成功地编写了一个将结果写入控制台的函数,但是我不知道如何访问函数中的信息,以便在页面的主视图中使用它。

我已经启动了一个简单的视图,这样我就可以集中精力在列表中显示Fi还原数据。这是我目前的基本代码。

代码语言:javascript
复制
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“分类的场馆。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-06 16:33:39

为了更方便的使用,我为你做了一个模型。请参阅下面的片段,如何在视图中显示数据。

你的模特:

代码语言:javascript
复制
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
    }
}

你的观点:

代码语言:javascript
复制
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))
                }
            }
        }
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59216575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档