【发布时间】:2022-10-12 21:41:00
【问题描述】:
我正在尝试为汽车保养笔记创建一个小应用程序。 现在我想从 Firestore 数据库中获取所有汽车维修记录,但我的代码无法正常工作。 我有一个集合“车辆”。该集合存储所有车辆文件。每辆车都有一个子集合“MaintenanceItems”,在这个子集合中,有一些文档。我需要为每辆车获取“MaintenanceItems”中的所有文档并将它们显示在屏幕上。 我为它写了“ExpensesManager”类,但是有一个问题。添加新的维护项目后,我得到了重复项。
import Foundation
import FirebaseFirestore
import FirebaseFirestoreSwift
class ExpensesManager: ObservableObject {
private(set) var expenses = [MaintenanceItem]()
@Published private(set) var expenseItems = [MaintenanceItem]()
let db = Firestore.firestore()
init(vehicles: [Vehicle]) {
fetchExpenseItems(vehicles: vehicles)
print("ExpensesManager init func succeess!")
}
func fetchExpenseItems(vehicles: [Vehicle]) {
for vehicle in vehicles {
guard let vehicleID = vehicle.id else {
print("VehicleID is not found")
return
}
db.collection("Vehicles").document("\(vehicleID)").collection("MaintenanceItems").addSnapshotListener { querySnapshot, error in
guard let documents = querySnapshot?.documents else {
print("Error fetching documents: \(String(describing: error))")
return
}
print("Documents are received")
self.expenses = documents.compactMap { document -> MaintenanceItem? in
do {
return try document.data(as: MaintenanceItem.self)
} catch {
print("Error decoding document into Expense: \(error)")
return nil
}
}
for expense in self.expenses {
self.expenseItems.append(expense)
}
print("Expenses array is completed")
}
}
}
}
【问题讨论】:
标签: swift firebase google-cloud-platform google-cloud-firestore