in firestore/FirestoreExample/LocalCollection.swift [57:82]
func listen() {
guard listener == nil else { return }
listener = query.addSnapshotListener { [unowned self] querySnapshot, error in
guard let snapshot = querySnapshot else {
print("Error fetching snapshot results: \(error!)")
return
}
let models = snapshot.documents.map { (document) -> T in
let maybeModel: T?
do {
maybeModel = try document.data(as: T.self)
} catch {
fatalError("Unable to initialize type \(T.self) from data \(document.data()): \(error)")
}
if let model = maybeModel {
return model
} else {
fatalError("Missing document of type \(T.self) at \(document.reference.path)")
}
}
self.items = models
self.documents = snapshot.documents
self.updateHandler(snapshot.documentChanges)
}
}