Возвратите количество документов Firebase как количество строк таблицы - PullRequest
0 голосов
/ 01 июля 2018

У меня есть функция, которая получает количество документов пожарного хранилища в коллекции, и я хочу использовать это количество в качестве возврата для функции табличного представления numberOfRowsInSection. Возврат вызывается до того, как счетчик будет получен с сервера и завершит работу программы. Я считаю, что мне нужно использовать замыкания, чтобы возвращать ожидание завершения, но я не уверен, как вернуть целое число из замыкания. Я довольно новичок в Swift и еще новее в Closures.

func getCount(completion: @escaping (Int) -> (Int)) {
    let today = getToday()
    let eventsRef = db.collection("users").document("test@test.com").collection(today)
     eventsRef.getDocuments() { (querySnapshot, err) in

            if let err = err {
                print("Error getting documents: \(err)")

            } else {
                completion((querySnapshot?.count)!)
            }

    }

    }

 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {


        getCount { (count) in

            self.count = count
        }

        return count!

    }

1 Ответ

0 голосов
/ 01 июля 2018

Вам нужно установить массив экземпляров

var arr = [<#typeHere#>]()

//

вернуть сюда отсчет

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
   return arr.count
}

и перезагрузите таблицу здесь

func getCount(completion: @escaping (Int) -> (Int)) {
  let today = getToday()
  let eventsRef = db.collection("users").document("test@test.com").collection(today)
  eventsRef.getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        }  
         // fill the array here  
         tableView.reloadData() // if it's a background thread embed code in DispatchQueue.main.async {---}
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...