В swift, как сделать функцию для возврата querysnapshot из Firebase? - PullRequest
0 голосов
/ 22 мая 2018

Как быстро я могу вернуть querySnapshot в этом коде:

  func read(){
    reference(to: .users).getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for document in querySnapshot!.documents {
                print("\(document.documentID) => \(document.data())")

            }
        }

    }
}

Приведенный выше код считывает данные из firebase и печатает их в операторе else.Я хочу вызвать функцию read() из контроллера представления, и read() должен вернуть querySnaphot!.documents.Как я могу сделать это, если я делаю:

func read() -> QuerySnaphot{
...
return querySnapshot!.documents

Это дает мне ошибку, что возвращает не пустое значение

1 Ответ

0 голосов
/ 22 мая 2018

Неожиданное возвращаемое значение в void функции

Невозможно вернуть значение внутри clouser.Вместо него вы можете использовать обработчики завершения.

 func read(_ completion:@escaping(_ querySnapshot:[QueryDocumentSnapshot])->Void){
   reference(to: .users).getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {

            if let documents = querySnapshot?.documents{
                completion(documents)
            }
        }

    }

Использование:

read { (documents) in

    for document in documents{

          print("\(document.documentID) => \(document.data())")
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...