Получить сумму данных Int из Firebase Firestore - PullRequest
0 голосов
/ 06 мая 2020

Привет всем, мне нужно составить сумму значений, которые я получаю, когда читаю данные из Firestore .

В моей БД Firestore У меня есть список голосов, и мне нужна их сумма. Я пробовал разные способы, но мне не удалось достичь своей цели ... На этом этапе я хотел спросить вас, как получить сумму значений, восстановленных из запроса в Firestore

Вот как я сохраняю свои значения в Firestore

 var data = [

        "Votazione" : "\(UserDefaults.standard.integer(forKey: "addExam.Vote.ref"))"

        ] as [String : Any]

         // Save in Firestore

 let user = Auth.auth().currentUser
     if let user = user {
         FirestoreManager.userRootExam(forUID: user.uid).addDocument(data: data) { (error) in

            if error != nil {
                print("Saved")
             }
         }
     }
     else { print("Non esiste un current User : Documento non Salvato")}

Так я получаю свои данные из базы данных

 FirestoreManager.userRootExam(forUID: Auth.auth().currentUser!.uid).getDocuments { (snapShot, error) in
        if error == nil {

            for doc in snapShot!.documents {

                let votes = doc.data()["Votazione"]
                // Print of votes
                  //Optional(25)
                  //Optional(22)
                  //Optional(22)

                // Print Sum of Votes ( 25 + 22 + 22 )
                print(totalVote)
            }
        }

Как видите, мне нужно totalVote значение (общая сумма всех восстановленных значений)

1 Ответ

2 голосов
/ 06 мая 2020

Если я правильно понимаю, вы сохраняете только одно целое значение в каждом объекте data, но вы приводите его к типу Any. Поэтому вам нужно вернуть его к Int, когда вы извлекаете данные и хотите получить сумму.

Чтобы получить сумму голосов, я думаю, вам нужно сделать что-то вроде:

var totalVotes = 0

for doc in snapShot!.documents {
   if let vote = doc.data()["Votazione"] as? Int {
      totalVotes += vote
   }
}

print(totalVote)

Сообщите мне, работает ли это.

...