После того, как вы построите свой запрос, вы должны затем запросить базу данных - вот как вы получите данные обратно. Возвращаемые данные - это пользовательский объект Firestore (QuerySnapshot
), который имеет ряд свойств, одним из которых является documents
, который является массивом другого пользовательского объекта Firebase (FIRDocumentSnapshot
). Из этого свойства находятся ваши данные. У объекта FIRDocumentSnapshot
есть метод с именем get()
, который может извлекать данные для вас (вы также можете использовать более синтаксический идиоматический словарь и не использовать метод get()
). Прочитайте документацию Firestore онлайн; это часто мучительно кратко, но это работает.
import UIKit
import FirebaseFirestore
class ViewControllerFirestone: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
simpleQueries()
}
private func simpleQueries() {
let db = Firestore.firestore()
let citiesRef = db.collection("cities")
let myQuery = citiesRef.whereField("state", isEqualTo: "CA")
myQuery.getDocuments { (snapshot, error) in
guard let snapshot = snapshot,
error == nil else { // error
return print("database error: \(error!)")
}
guard !snapshot.isEmpty else { // no data
return print("no data")
}
// data fetched, loop through documents
for doc in snapshot.documents {
guard let stateProperty = doc.get("state") as? String else {
continue // continue loop
}
print(stateProperty)
}
}
}
}
В качестве примечания, это хорошее место, чтобы использовать очереди отправки для обработки ваших результатов в фоновом режиме, поскольку данные, возвращаемые Firestore, всегда будут в главном потоке. Этот пример не использует очереди.