Как построить пользовательский объект, который состоит из 2 пользовательских объектов для расширяющейся ячейки? - PullRequest
1 голос
/ 27 января 2020

Я следую этому уроку здесь для свертывания 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 и где я могу это сделать?

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