Удалить значение из табличного представления, не требуя ответа от Firebase - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь выполнить код, когда я удаляю значение из tableView, но это не сработало ..

На самом деле я хочу загрузить из firebase текущее значение, а затем вычесть значение, заданное в другом окне из firebase, и autoID включен в мой tableView. Поэтому я должен загрузить 2 информации из Firebase, затем выполнить вычитание и отправить новое значение в firebase, прежде чем стереть строку моего tableView.

У меня есть этот код:

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

    if editingStyle == .delete{

        if let user = Auth.auth().currentUser{

            // user is connect
            let ref = Database.database().reference()
            let userID = Auth.auth().currentUser?.uid

            //soustraire les valeurs au total exp
            ref.child("Experience").child(userID!).observeSingleEvent(of: .value) {(snapshot) in

                if let value = snapshot.value as? [String:String]{
                    let value = snapshot.value as? NSDictionary


                    let ldg_day = value?["LDG_DAY"] as? String ?? "0"
                    let ldg_night = value?["LDG_NIGHT"] as? String ?? "0"
                    let apch_ifr = value?["APCH_IFR"] as? String ?? "0"


                    self.oldIntDayLdg = Int(ldg_day) ?? 0
                    /*self.intLdgNight = Int(ldg_night) ?? 0
                     self.intApchIfr = Int(apch_ifr) ?? 0*/

                    self.oldStringDayLdg = ldg_day
                    /*self.currentStringLdgNight = ldg_night
                     self.currentStringApchIfr = apch_ifr*/

                    print("getUserInfo : IntDay : \(self.oldIntDayLdg) & StringDay : \(self.oldStringDayLdg)")
                }
            }

        ref.child("flights").child(userID!).child(datas[indexPath.row].AutoId).observeSingleEvent(of: .value) {(snapshot) in

            if let value = snapshot.value as? [String:String]{
                    let value = snapshot.value as? NSDictionary


                    let this_flight_ldg_day = value?["LDG_DAY"] as? String ?? "0"
                    /*let ldg_night = value?["LDG_NIGHT"] as? String ?? "0"
                    let apch_ifr = value?["APCH_IFR"] as? String ?? "0"*/


                    self.thisIntDayLdg = Int(this_flight_ldg_day) ?? 0
                    /*self.intLdgNight = Int(ldg_night) ?? 0
                     self.intApchIfr = Int(apch_ifr) ?? 0*/

                    self.thisStringDayLdg = this_flight_ldg_day
                    /*self.currentStringLdgNight = ldg_night
                     self.currentStringApchIfr = apch_ifr*/
                    print("thisFlightInfo : IntDay : \(self.thisIntDayLdg) & StringDay : \(self.thisStringDayLdg)")
                }
            }
            print("Calcul : \(self.newIntDayLdg) = \(self.oldIntDayLdg) + \(self.thisIntDayLdg)")

            newIntDayLdg = oldIntDayLdg - thisIntDayLdg

            print("int result : \(self.newIntDayLdg)")

            newStringDayLdg = String(newIntDayLdg) ?? "00"

            print("String result : \(self.newStringDayLdg)")

            ref.child("Experience").child(userID!).updateChildValues(["LDG_DAY": self.newStringDayLdg//,
                                                                      /*"LDG_NIGHT": self.currentStringLdgNight,
                                                                      "APCH_IFR": self.currentStringApchIfr*/])

            ref.child("flights").child(userID!).child(datas[indexPath.row].AutoId).removeValue()

                    self.tableView.reloadData()



        }else{
            // si non connecté alors DECONNEXION !!!!
            fatalError("⛔️ error ...")
        }

        datas.remove(at: indexPath.row)

        tableView.reloadData()

    }
}

Но этот отправляет мне 0 каждый раз, а не хорошее значение ...

let ldg_day = value?["LDG_DAY"] as? String ?? "0" дай мне 0

и

let this_flight_ldg_day = value?["LDG_DAY"] as? String ?? "0" дай мне также 0

более того, при всей моей распечатке я обнаружил, что код печатается первым:

print("Calcul : \(self.newIntDayLdg) = \(self.oldIntDayLdg) + \(self.thisIntDayLdg)")

тогда

print("String result : \(self.newStringDayLdg)")

и только после двух отпечатков:

print("getUserInfo : IntDay : \(self.oldIntDayLdg) & StringDay : \(self.oldStringDayLdg)")

&

print("thisFlightInfo : IntDay : \(self.thisIntDayLdg) & StringDay : \(self.thisStringDayLdg)")

в чем проблема?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...