func setExpenses(){
FirebaseFunctions().retrieve(from: .expense, username: username as! String, returning: Expenses.self) { (expenses) in
self.expenses = expenses
}
}
В настоящее время у меня есть запрос Firebase, как показано выше, который получает список расходов из базы данных облачного FireStore. Однако, когда я запускаю функцию ниже и пытаюсь распечатать массив, я получаю результат того, что массив пуст. Я не понимаю, почему запрос не может быть выполнен правильно. У меня тот же код в другом контроллере представления, и он отлично работает, что заставляет меня думать, что это связано с синхронизацией. Но может кто-нибудь помочь мне решить эту проблему?
public func getCollectionExpenses(collection: String, completionHandler: @escaping([[Expenses]], [String]) -> Void){
setExpenses()
print(expenses)
print("hello")
for eachExpense in expenses{
if eachExpense.collection == collection{
expensePerCollection.append(eachExpense)
}
}
Вот код для функции получения, на всякий случай
func retrieve<T: Decodable>(from collectionReference:FIRCollectionReference, username:String, returning objectType: T.Type, completion: @escaping (([T]) -> Void)) {
referenceSub(to: collectionReference, username: username).addSnapshotListener { (snapshot, _) in
guard let snapshot = snapshot else { return }
do {
var objects = [T]()
for document in snapshot.documents {
let object = try document.decode(as: objectType.self)
objects.append(object)
}
completion(objects)
} catch {
print(error)
}
}
}