У меня есть проблемы с преобразованием querySnapshots
, которое наблюдается для изменений с snapshotListener
в пользовательские объекты.
Это мой код, но компилятор жалуется:
func getCartData(db: Firestore){
db.collection("test")
.whereField("Cart", arrayContains: "testItem")
.addSnapshotListener { querySnapshot, error in
guard let documents = querySnapshot?.documents else {
print("Error fetching document: \(error!)")
return
}
for doc in documents {
guard let data = doc.data() else { //here is an error saying: Initializer for conditional binding must have Optional type, not '[String : Any]'
print("Document data was empty.")
return
}
let result = Result {
try doc.data(as: CartDataDocument.self)
}
switch result {
case .success(let userDataDoc):
if let userDataDoc = userDataDoc {
// A `userDataDoc` value was successfully initialized from the DocumentSnapshot.
self.cartData = userDataDoc
} else {
// A nil value was successfully initialized from the DocumentSnapshot,
// or the DocumentSnapshot was nil.
print("Document does not exist")
}
case .failure(let error):
// A `userDataDoc` value could not be initialized from the DocumentSnapshot.
print("Error decoding UserDataDocument: \(error)")
}
}
}
}
Мне удалось создать пользовательские объекты из одного документа Firestore, который прослушивался с snapshotListener
, но мне не повезло с этим запросом.