swift - 从 Firestore 数据库检索数据时出现问题

标签 swift firebase google-cloud-firestore

我正在尝试从我的 firestore 数据库中的集合中检索数据。但是打印检索到的数据时,它不符合我期望的格式。

这是我用于检索以下数据的代码:

 let db = Firestore.firestore()

    func loadEvents() -> [Event] {
        var events = [Event]()
        let decoder = JSONDecoder()
        db.collection("Events").addSnapshotListener { QuerySnapshot, error in
            guard let documents = QuerySnapshot?.documents else {
                print("Error fetching documents: \(error!)")
                return
            }

            for doc in documents {
                let dict = doc.data()
                if let data = try? JSONSerialization.data(withJSONObject: dict, options: []) {
                    let event = try? decoder.decode(Event.self, from: data)
                    events.append(event!)
                    print(events) // Prints stuff like [Envy.Event] ...
                }
            }
//            let events = documents.map {$0.data()}
            }
        return events
    }

到达 print(events) 时,它会打印类似 [Envy.Event] 的内容 [嫉妒事件,嫉妒事件] [羡慕.事件,羡慕.事件,羡慕.事件] [Envy.Event, Envy.Event, Envy.Event, Envy.Event] 这不是适合操作的数据格式。我什至不明白这种格式;有人可以帮我吗?

最佳答案

你打印错了。您正在打印您创建的整个模型类,您需要引用类内的对象,例如。

print(events.name) // use the object name you have in your class
print(events.location) // use the object name you have in your class

将数据添加到数组中 示例代码:

db.collection("Events").getDocuments() { (querySnapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                for document in querySnapshot!.documents {
                    let list = Event(name: document.get("yourKeyName") as? String,location: document.get("yourAnotherKeyName") as? String)

                    events.append(list)
                    print(event.name)
                    print(event.location)

                }
            }
        }

希望这有帮助

关于swift - 从 Firestore 数据库检索数据时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57271069/

相关文章:

ios - 如何在 tableview 单元格之间将数据从 firebase 传递到 View Controller ?

javascript - 如何将 Google Firestore 中的数据提取到我的 Vue 实例中?

swift - iOS : throttle bandwidth of e. g。阿拉莫菲尔

ios - 类 UITableViewCell 没有名为 Storyboard的成员

ios - 正在取消 Alamofire 请求

android - 使用 WhatsApp 之类的 Firebase 私有(private)聊天

Swift根据数据改变tableviewcell的边框颜色

javascript - 为 JSON 上的每个元素创建一个 React 组件

javascript - Firebase Firestore 等待更新完成(js web)

angular - 如何在 angularfire firestore 中删除整个文档集合