我正在尝试从我的 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/