Firebase Firestore查询未执行

时间:2018-05-12 02:51:02

标签: swift firebase swift4 google-cloud-firestore

func setExpenses(){
    FirebaseFunctions().retrieve(from: .expense, username: username as! String, returning: Expenses.self) { (expenses) in
        self.expenses = expenses
    }
}

我目前有一个firebase查询,如上所示,它从云端防火墙数据库中检索费用列表。但是,当我运行下面的函数并尝试打印数组时,我得到一个数组为空的结果。我不明白为什么查询无法正确执行。我在另一个视图控制器中有相同的代码,它工作正常,这让我觉得它与时间有关。但有人可以帮我解决这个问题吗?

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)
        }
}
}

0 个答案:

没有答案