Partage
  • Partager sur Facebook
  • Partager sur Twitter

Retourner des données Firestore en Swift

Compter le nombre de documents dans une collection

    31 mai 2021 à 12:22:56

    Bonjour, alors je suis débutant en swift et je bloque depuis 1 semaines sur ce petit problème. Je vous explique : j'ai créer un TableView Controller "dynamique", le nombre de cellules qu'il génère dépend du nombre de document présent dans ma collection Firebase. Le problème c'est que je sais comment créer un compteur, mais je ne sais pas comment retourner la valeur.

    Voici un extrait de mon code : 

    let ref = Firestore.firestore().collection("utilisateur").document("EJj1MzvzVMMVZPMkNTLyDMKlEK83")
    
    ref.collection("soirée").getDocuments() { (querySnapshot, err) in
    
                var nbr : [Int] = [0]
                
                if let err = err {
                    print("Error getting documents: \(err)")
                } else {
                    var x = 0
                    for _ in querySnapshot!.documents {
                        x += 1
                    }
                    nbr[0] = x
                    return nbr[0]
                }
            }

    Merci par avance ! ;)

    • Partager sur Facebook
    • Partager sur Twitter
      1 juin 2021 à 9:17:42

      Salut, jai pas trop compris ce que tu cherchais à faire avec un compteur mais je pense pas que retourner une valeur soit ce que tu cherches à faire. C’est du code async donc tu peux pas faire de return de value. Il faut que tu set une propriété de classe pour pouvoir lutiliser ultérieurément

      • Partager sur Facebook
      • Partager sur Twitter
        1 juin 2021 à 9:56:26

        Geda a écrit:

        Salut, jai pas trop compris ce que tu cherchais à faire avec un compteur mais je pense pas que retourner une valeur soit ce que tu cherches à faire. C’est du code async donc tu peux pas faire de return de value. Il faut que tu set une propriété de classe pour pouvoir lutiliser ultérieurément

        Salut, merci de ta réponse. En fait, ce que je veux c'est définir le nombre de cellule de mon tableau, et je voudrai qu'il y ai une cellule par document, donc c'est pour ça que j'ai créé un compteur. Et du coup je voudrai qu'il me retourne le nombre de document présent dans la collection. Mais je vais essayer ce que tu m'as dis, merci ;)

        ⛔️ Finalement, après plusieurs recherches et tentative je n'y arrive toujours pas. Comment faire pour que mon UITableView ai autant de cellules que de documents (dans la collection) ?



        -
        Edité par Lu7k7 1 juin 2021 à 16:06:39

        • Partager sur Facebook
        • Partager sur Twitter
          1 juin 2021 à 21:27:48

          Alors, ton truc asynchrone c’est un appel réseau qui te permet de récupérer de la données. Des « documents » d’après ce que tu dis. Tes documents sont d’un certains types (d’ailleurs Ça m’étonne que tu ne decodes rien, je me demande ce que c’est ce document). Jusque la c’est correct ?

          Tu pourrais créer une variable au début de ta classe. Disons var documents = Documents()

          Ensuite, à la place de ton compteur tu peux faire un self.documents = querySnapshot.documents et ensuite un self.tableView.reloadData() ce qui va demander à la tableView de recalculer le nombre de cellules et de Les afficher. 

          donc tu implementes 2 méthode de UITableViewDataSource : numberOfRows et cellForRow

          l’implementation de la premiere est simple : documents.size.

          Pour la deuxième il faudrait créer une cellule et la remplir en fonction de documents[indexPath.row]. Tu peux aussi retourner UITableViewCell(). A ce niveau la tu devrais avoir autant de cellules vides que de documents.

          Si t’as un GitHub on pourrait trouver une autre maniere d’échanger. Avec de la review de code si ça t’intéresse. 

          • Partager sur Facebook
          • Partager sur Twitter
            3 juin 2021 à 9:38:16

            D'accord je vois, merci je vais essayer ça tout de suite, en attendant j'ai créer un GitHub sur lequel j'ai importer mon fichier UITableViewController pour que ce soit plus clair a comprendre. Mon GitHub c'est Lu7k7.

            • Partager sur Facebook
            • Partager sur Twitter
              3 juin 2021 à 23:23:01

              J’ai jeté un coup d’œil et ça marche pas que tu appelles le code pour récupérer la donnée dans la méthode cellforow. Faut mettre ça dans le viewDidLoad. J’essaierai de te faire un retour plus précis demain dans une issue ou autre. Je verrai.
              • Partager sur Facebook
              • Partager sur Twitter
                6 juin 2021 à 19:31:00

                Geda a écrit:

                J’ai jeté un coup d’œil et ça marche pas que tu appelles le code pour récupérer la donnée dans la méthode cellforow. Faut mettre ça dans le viewDidLoad. J’essaierai de te faire un retour plus précis demain dans une issue ou autre. Je verrai.

                Je me suis renseigné un peu plus sur le sujet, et avec un peu d'aide j'ai compris et on a trouvé une solution donc problème résolu ! Merci beaucoup de ton aide ;)

                • Partager sur Facebook
                • Partager sur Twitter

                Retourner des données Firestore en Swift

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown