Эта проблема иногда возникает, поэтому я собираюсь опубликовать свой комментарий в качестве ответа.
Существуют ситуации, когда наблюдатель может быть добавлен в узел и когда данные изменяются в этом узле, например, запись или обновить, он запустит того наблюдателя, который может затем перезаписать существующие данные с помощью nil.
Вы можете увидеть это визуально в консоли, так как когда происходит запись, вы можете увидеть изменение / обновление данных, а затем красный, а затем загадочно исчезает.
Как предлагается в моем комментарии, добавьте точку останова в функцию, которая выполняет запись и запустить код. Посмотрите, если эта функция вызывается дважды (или более). Если это так, то при первой записи данные сохраняются должным образом, но при повторном вызове записываемые значения, вероятно, равны нулю, что делает узел «go прочь», поскольку узлы Firebase не могут существовать без значения.
Вообще говоря, если вы видите, что ваши данные становятся красными и исчезают sh, это, вероятно, вызвано записью нулевых значений в узел.