Быстрое завершение в Firestore - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу перезагрузить свой TableView после того, как получу всю информацию из Firestore.

Пока это мой код: но он все равно не имеет смысла. Я просто пишу на go. Как я могу написать блок завершения для Firestore

Спасибо.

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "inseratCell", for: indexPath) as! ListTableViewCell
    let returnCell = getCellInfo(indexInt: indexPath.row, cell: cell) { error, cell in

    }
     return cell
}
func getCellInfo(indexInt: Int, cell: ListTableViewCell,completion: @escaping(_ success:Bool, _ cell: ListTableViewCell)-> ()) {
    let db = Firestore.firestore()
    db.collection("Inserate").document(inserate[indexInt]).getDocument { (document, error) in

         if error == nil {
             if document != nil && document!.exists {

                 let documentData = document!.data()
                     if(documentData != nil){
                        cell.cityLabel.text = documentData!["Ort"] as? String
                        cell.costLabel.text = "\(documentData!["Kaufpreis"] as! String) €"
                        cell.groundSquareLabel.text = "\(documentData!["Grundgröße"] as! NSNumber) m²"
                        cell.HousesquareLabel.text = "\(documentData!["Wohnfläche"] as! NSNumber) m²"
                        cell.HousesquareLabel.text = "\(documentData!["Wohnfläche"] as! NSNumber) m²"
                        cell.idLabel.text = document?.documentID

                        let imageUrl = documentData!["TitleBild"] as! String
                        let url = URL(string: imageUrl)

                        ImageService.downloadImage(withURL: url!) { image in
                            cell.imageM.image = image
                        }
                }

            }
        }

    }
    return completion(true, cell)

}

1 Ответ

0 голосов
/ 23 апреля 2020

Вы можете создать менеджер для Firebase:

    func getSomething(completion: @escaping ([Something]) -> Void) {
        var something: [Something] = []
        guard let userId = Auth.auth().currentUser?.uid else { return }
        database.collection("collectionName").getDocuments() { (querySnapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                for document in querySnapshot!.documents {
                    guard let model = try? FirestoreDecoder().decode(Something.self, from: document.data()) else { return }
                    if userId == model.userId {
                        something.append(model)
                    }
                    print(model)
                }
            }
            completion(something)
        }
    }

Тогда в вашем V C:

var something: BehaviorRelay<[Something]> = BehaviorRelay(value: [])
  FirebaseManager.shared.getSomething { something in
                self.something.accept(something)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...