Запрос Firebase Firestore не выполняется - PullRequest
0 голосов
/ 12 мая 2018
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)
        }
}
}

1 Ответ

0 голосов
/ 12 мая 2018

Где вы устанавливаете snapshot.documents?Похоже, вам нужно установить, а затем повторить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...