Заполните TableView данными из Firestore - PullRequest
1 голос
/ 05 февраля 2020

У меня проблемы с заполнением таблицы. Когда я запускаю этот код, он вообще не заполняет табличное представление. Я уверен, что он получает данные из firebase.

    var restaurants: [Restaurants] = []

override func viewDidLoad() {
        super.viewDidLoad()

        videos = fetchData()
        configureTableView()
    }

вот моя функция расширения:

extension RestaurantViewController {
    func fetchData() -> [Restaurants]{

        let db = Firestore.firestore()
        db.collection("Restaurants").getDocuments { (snapshot, err) in

            if let err = err {
                print("Error getting documents: \(err)")
                return
            } else {
                for document in snapshot!.documents {

                    let name = document.get("Name") as! String

                    print("Name: ",name)
                    let restaurant1 = Restaurants(title: name)

                    self.restaurants.append(restaurant1)

                }

            }
        }

        return restaurants

    }

Я, вероятно, упустил что-то простое, пожалуйста, помогите

Спасибо !

1 Ответ

3 голосов
/ 05 февраля 2020

Попробуйте что-то вроде этого вместо

func fetchData(completion: @escaping (Bool) -> ()){

    let db = Firestore.firestore()
    db.collection("Restaurants").getDocuments { (snapshot, err) in

        if let err = err {
            print("Error getting documents: \(err)")
            completion(false)
        } else {
            for document in snapshot!.documents {

                let name = document.get("Name") as! String

                print("Name: ",name)
                let restaurant1 = Restaurants(title: name)

                self.restaurants.append(restaurant1)

            }

            completion(true)
        }
    }
}

По вашему мнениюDidLoad:

fetchData { (done) in

    if done {
        configureTableView()
    } else {
        // Handle this somehow
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...