Moja aplikacja wykorzystuje Firebase do synchronizowania i przywracania danych. Używam metody setValue:withCompletionBlock:
do wstawiania, aktualizowania i usuwania obiektów Firebase. Ta metoda jest wywoływana gdy istnieje CoreData oszczędzania, więc wszystkie moje synchronizacji lokalnych zmian FirebaseTrwałość Firebase, wyczyść pamięć podręczną Firebase
- (void) setValue:(id)value withCompletionBlock:(void (^)(NSError* error, Firebase* ref))block;
Teraz synchronizacją przesłane wszystkie lokalne dane do Firebase, podczas przywracania zastępuje lokalnych danych z danymi Firebase.
- (void) observeSingleEventOfType:(FEventType)eventType withBlock:(void (^)(FDataSnapshot* snapshot))block;
Obserwuję FEventTypeValue
i użyć FDataSnapshot
aby uzyskać dane z Firebase i przywrócić dane lokalne.
Wszystko działa idealnie, dopóki nie ustawię persistence
na Firebase.
[Firebase setOption:@"persistence" to:@YES];
Teraz kiedy persistence
jest włączony, kiedy aktualizować powiedzieć wstawić obiekt do Firebase, a następnie przywrócić dane przed przywróceniem wstawiania. tj. nowo wstawiony obiekt nie zostanie przywrócony. Jeśli jednak przywrócę ponownie, wstawiony obiekt zostanie przywrócony. To samo dzieje się, gdy obiekt zostanie usunięty. Usuwany obiekt pojawia się ponownie, gdy przywracam po raz pierwszy i znika po ponownym przywróceniu. Widzę, że obiekty Firebase są prawidłowo wstawiane i/lub usuwane przez widok danych Firebase.
Nie jestem pewien, co robię źle tutaj. Mam problem tylko po przywróceniu. Myślę, że pamięć podręczna Firebase powoduje ten problem przywracania. Zastanawiam się, czy wyczyścić pamięć podręczną Firebase, zanim ją przywrócę. Moje pytanie brzmi:
- Czy wyczyszczenie pamięci podręcznej przed przywróceniem dobrej metody?
- Jeśli tak, jak wyczyścić pamięć podręczną Firebase?
- Jeśli nie, czy możesz zaproponować mi najlepszą metodę przywracania danych.
Czy to nadal ma miejsce? Wygląda na to, że wpadłem na ten problem. Sprawdź, czy istnieje nazwa użytkownika, jeśli nie, utwórz użytkownika. Jeśli użytkownik się wyloguje i spróbuje utworzyć nowego użytkownika o tej samej nazwie, zadziała, ponieważ pamięć podręczna nie zostanie zaktualizowana. –
Jestem wielkim fanem Firebase. Ale muszę powiedzieć szczerze, że to duże ograniczenie. Firebase powinien dodać nowy parametr w metodzie 'fetchNewData: Bool'.Oczekiwane zachowanie, które jest nieoczekiwane, nie jest oczekiwanym zachowaniem. Istnieje wiele przypadków, w których może to się nie udać, np. Paginacja. Większość z nas nie zauważyłaby wartości strony dla strony podczas dzielenia na strony, w przeciwnym razie poprzednia strona mogłaby zostać odświeżona, a sama koncepcja dzielenia na strony (aby zmniejszyć transfer danych) stała się bezużyteczna, ponieważ metoda obserwacji utrzymuje odświeżanie danych poprzedniej strony, oraz nie możemy również użyć 'removeObserver' –
Dowolną poprawkę do tego? – Relm