Я следую этому уроку здесь для свертывания UITableViewCells и механики достаточно просты, но я не совсем уверен, как заполнить мои массивы моделей из Firestore. Он вручную создал данные для демонстрационных целей, поэтому, естественно, как новичок, я спотыкаюсь, поскольку вместо этого я делаю сетевой вызов Firebase.
Моя структура данных проста. Базовая коллекция (которая будет заполнять заголовок ячейки) извлекает данные отсюда: db.collection ("Insurance_Plans") и содержит следующие строки: - Имя держателя - Контакт держателя et c.
И каждый страхователь имеет несколько застрахованных свойств, и это является частью коллекции, т.е. db.collection ("Insurance_Plans"). document (planId). ("Insured_Property"), а модель данных состоит из следующих строк: - Тип свойства - Адрес свойства и т. д. c.
Я создаю основную структуру:
struct cellData {
var opened = Bool()
var plans = [Plan]()
var properties = [Properties]()
}
и в самом классе я объявляю его экземпляр следующим образом:
var tableViewData = [cellData]()
Затем я запрашиваю метаданные страхования (которые имеют свою собственную функцию) следующим образом:
db.collection("Insurance_Plans").getDocuments() {
documents, error in
guard let snapshot = documents else {
let error = error
print("Error fetching documents results: \(error!.localizedDescription)")
return
}
let results = snapshot.documents.map { (document) -> Plan in
if let plan = Plan(dictionary: document.data(), id: document.documentID) {
self.plansArray.append(plan)
self.loadPropertyData(planId: document.documentID) // another function where property details are queried
return plan
} else {
fatalError("Unable to initialize type \(Plan.self) with dictionary \(document.data())")
}
}
self.plansArray = results
self.plansDocuments = snapshot.documents
self.plansTableView.reloadData()
}
Затем я запрашиваю свойства в каждом плане следующим образом:
db.collection("Insurance_Plans").document(planId).collection("Properties").getDocuments() { documents, error in
guard let snapshot = documents else {
let error = error
print("Error fetching documents results: \(error!.localizedDescription)")
return
}
let results = snapshot.documents.map { (document) -> Property in
if let property = Property(dictionary: document.data()) {
return property
} else {
fatalError("Unable to initialize type \(Property.self) with dictionary \(document.data())")
}
}
self.propertiesArray = results
self.propertiesDocuments = snapshot.documents
self.ordersTableView.reloadData()
}
Мой вопрос тогда как мне ввести метаданные страховки и последующие данные свойств в объект cellData и где я могу это сделать?