2016-05-28 1 views
1

Hier ist ein schneller Code zu Firebase, der nicht so funktioniert, wie ich es erwarte und ich würde gerne wissen, was ich falsch mache. Firebase: .observeEventType .Value

let firebaseRootReference = Firebase(url:"https://mywonderfulapp.firebaseio.com/“), 
    dataRef = firebaseRootReference.childByAppendingPath(“MyList") 
    dataRef = dataRef.childByAppendingPath(key) // key is a String object. 

    dataRef.observeEventType(.Value, withBlock: { snapshot in 
     for dataItem in snapshot.children { 
      let dataKey = (dataItem as? FDataSnapshot)!.key, 
      dataVal = (dataItem as? FDataSnapshot)!.value.objectForKey("name") as! String 
      print("Found (observeEventType) : \(dataKey) -> \(dataVal)") 
     } 

     }, withCancelBlock: { error in 
      print(error.description) 
    }) 

Der obige Code druckt etwa wie folgt in der Debugger-Konsole:

Found (observeEventType) : SOME-KEY -> SOME-DATA 

Das ist vollkommen in Ordnung, und das ist, was ich in einer normalen Situation erwarten. Aber selbst wenn ich mein Gerät in den Flugmodus setze, um das Netzwerk zu stoppen, druckt es immer noch die gleichen Dinge. Natürlich habe ich die Serverseite überprüft, um zu bestätigen, dass nichts geschrieben wurde.

Mit anderen Worten wird der Block in dataRef.observeEventType aufgerufen, obwohl nichts auf den Server geschrieben wurde.

Es verfolgt nicht, was tatsächlich auf dem Server geschrieben wurde, aber was wäre geschrieben worden, wenn es verbunden war. Also was fehlt mir? Wahrscheinlich nicht überprüfen, was ich sollte?

Beachten Sie, dass ich kein Problem sehe, wenn normalerweise mit dem Netzwerk verbunden ist.

+0

versuchen OnDisconnect Methoden –

+0

Wie würde ich diese OnDisconnect Methode in meinem Fall verwenden? Und was ist los mit dem, was ich getan habe? – Michel

+0

Ich versuche nicht, etwas spezifisch zu tun, wenn der Benutzer trennt. – Michel

Antwort

0

gibt es einige beschreiben um die Basis func setValue(value: AnyObject!)

  • Die Wirkung des Schreib wird sofort und die entsprechenden Ereignisse ausgelöst werden sichtbar. Die Synchronisierung der Daten mit den Firebase Servern wird ebenfalls gestartet.

die so beobachten, bevor die Synchronisation oder gleichzeitig ausgelöst werden

+0

Es tut mir leid, es scheint, als wäre meine Frage nicht klar. Ich habe über onDisconnect() (nach Ihrem ersten Kommentar) in der Firebase-Dokumentation gelesen, aber ich sehe nicht wirklich, wie ich es verwenden kann. Ein weiterer wichtiger Punkt ist, dass ich überhaupt kein Problem habe, auf den Server zu schreiben. Das funktioniert gut. Mein Problem ist zu verstehen, was passiert, wenn ich nicht verbunden bin. – Michel

+0

Sie tun nichts während nicht verbunden? Ich bin verwirrt darüber –