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