Работа с Firebase childDeleted и childModified наблюдателями Swift - PullRequest
2 голосов
/ 20 июня 2019

В моем приложении я установил наблюдателей для childAdded, childDeleted и childModified на интересующих узлах базы данных Firebase, чтобы отслеживать их и соответственно изменять базу данных моего устройства CoreData. Я только что понял, что если childDeleted или childModified произойдет, когда устройство не подключено к сети, оно не получит уведомление об этих событиях, когда оно снова подключится к сети. Поскольку это нормальное ожидаемое поведение, как я понял, я подумал об обходном пути так: когда я инициирую удаление записи на узле Firebase, я создам запись соответствующего «удаленного» узла. Таким образом, событие childAdded будет запущено, когда устройство вернется в оперативный режим и выполнит логику, которую теперь выполняет наблюдатель childDeleted. Таким образом, я не буду наблюдать никаких childDeleted событий. Итак, мой вопрос: я неправильно использую наблюдателей Firebase, и childDeleted должен быть сообщен в любом случае, когда устройство вернется в режим онлайн, или такая ситуация на самом деле должна работать? Какие решения вы реализовали в этой ситуации?

1 Ответ

1 голос
/ 20 июня 2019

База данных Firebase Realtime синхронизирует состояние данных на сервере с любыми подключенными клиентами. Всякий раз, когда клиент (повторно) подключается, Firebase удостоверяется, что клиент имеет текущее состояние данных. Как вы обнаружили, Firebase явно не синхронизирует изменения состояния.

Если вы хотите синхронизировать изменения состояния, вы должны хранить именно эти изменения состояния в базе данных. Потому что тогда эти изменения становятся данными, которые синхронизирует Firebase.

Итак, ваше решение в порядке, и на самом деле это идиоматический способ справиться с этим требованием.

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