Firebase entfernt Beobachter

8

Ich habe ein Problem beim Entfernen eines Firebase-Beobachters in meinem Code. Hier ist eine Gliederung der Struktur:

%Vor%

Jetzt, wenn ich den Viewcontroller verlasse, sehe ich, dass "Removed the handle" gedruckt wird, aber wenn ich zum Viewcontroller zurückkehre, wird mein Observer zweimal für jedes Ereignis aufgerufen. Wenn ich gehe und wieder zurückkehre, heißt es dreimal. Usw. Warum wird der Beobachter nicht entfernt?

Ich rufe später auch ref.setValue("some value") im Code auf, könnte das etwas damit zu tun haben?

    
Nicolaas Wagenaar 25.11.2014, 10:23
quelle

3 Antworten

2

Ich dachte, ich hätte diesen Fehler, aber in Wirklichkeit versuchte ich Beobachter aus der falschen Quelle zu entfernen.

ORIGINALCODE:

%Vor%

BEHOBENER CODE:

%Vor%     
Reid 24.06.2016 23:19
quelle
1

Da es April 2015 ist und der Fehler immer noch vorhanden ist, würde ich eine Problemumgehung für das Problem vorschlagen:

  • behalten Sie einen Verweis auf die Handles (sagen wir in einem Wörterbuch und bevor Sie einen neuen Beobachter für den gleichen Ereignistyp initiieren, überprüfen Sie, ob der Beobachter bereits dort ist.

Die Griffe sind sehr klein (basierend auf einigen offiziellen Kommentaren :)), also wird es nicht so weh tun.

    
Daniel K 15.04.2015 20:33
quelle
0

Beobachter müssen auf demselben Referenzpfad entfernt werden, auf den sie gesetzt wurden. Und für die gleiche Anzahl von Malen, die sie ausgegeben wurden, oder ref.removeAllObservers () für jeden Pfad verwenden.

Hier ist ein Trick, den ich benutze, um es ordentlich zu halten:

%Vor%

... dann, Beobachter in viewDidLoad ():

%Vor%

... dann, in ViewWillDisappear (), kümmern Sie sich um das Entfernen aller ausgegebenen Beobachter:

%Vor%     
jazzgil 20.03.2017 22:33
quelle

Tags und Links