2016-09-13 26 views
0

Ich kann meine Einträge in Firebase erfolgreich aktualisieren, da sie auf der Konsole, nicht aber in der Tabellenansicht angezeigt werden. Wenn ich meine App neu starte, werden die Änderungen angezeigt, aber ich möchte, dass sie sofort angezeigt werden.Aktualisieren der Tabellenansicht nach dem Aktualisieren der Werte in Firebase

Meine Vorgehensweise besteht darin, das Array, das die Tabellenansicht füllt, so schnell wie möglich unter der Benachrichtigung "ChildChanged" zu bearbeiten.

ref.observeEventType(.ChildChanged, withBlock: { (snapshot) in 

     print("One of the entries were changed so we're reloading the table view") 

     if let firstname = snapshot.value?.objectForKey("firstname"), lastname = snapshot.value?.objectForKey("lastname") 
     { 
      let fullname = "\(firstname) \(lastname)" 

      names[I_Need_This_Index] = fullname 
      dispatch_async(dispatch_get_main_queue()) 
      { 
       self.tableView.reloadData() 
      } 
     } 

    }, withCancelBlock: nil) 

Wie Sie sehen können, ich brauche nur Index zu finden, was ich brauche, weil ich bereits die „Fullname“ Wert haben, der bearbeitete Wert ist, dass ich wünschte mit der Tabellen-Ansicht zu aktualisieren.

Wie würde ich das machen?

Antwort

0

Sie müssen den Index mit dem Schlüssel des geänderten untergeordneten Elements suchen. Daher könnte ein Wörterbuch initial eingerichtet werden, um die Schlüssel für alle Kinder dem Index Ihrer Tabellenansichtszelle zuzuordnen, wenn alle Werte empfangen werden.

Bearbeiten: Wenn Sie den alten Wert selbst benötigen, müssen Sie die ursprüngliche Änderung Snapshot selbst erhalten.

+0

Das klingt nach etwas, was ich wahrscheinlich tun sollte. Der Wert meines Snapshots ist jedoch der neu aktualisierte Wert, während ich versuche, den alten Wert –

+0

zu erhalten. Der alte Wert ist nicht im Änderungs-Snapshot enthalten. Sehen Sie sich die Dokumentation an: https://firebase.google.com/docs/reference/ios/firebasedatabase/interface_f_i_r_data_snapshot. Sie müssen den alten Wert bei Bedarf selbst erhalten. Eine andere Idee wäre, den ursprünglichen Snapshot als Tabellenansichtsmodell zu verwenden, um alle Informationen (Schlüssel, alter Wert usw.) zu erhalten. –

+0

hmm..wie würde ich das machen? –

Verwandte Themen