Если вы уже прослушиваете .childAdded
, вы можете просто сохранить счетчик и увеличить его на:
var nodeCount: Int = 0
ref.child("offers").observe(.childAdded, with: { snapshot in
nodeCount = nodeCount + 1
counterLbl.text = String(nodeCount)
}
Если ваш вариант использования также позволяет удалять узлы из базы данных,Вы также должны прислушиваться к .childRemoved
, чтобы уменьшить счетчик:
ref.child("offers").observe(.childRemoved, with: { snapshot in
nodeCount = nodeCount - 1
counterLbl.text = String(nodeCount)
}
Более сложный сценарий
Обратите внимание, что этот подход требует загрузки всех узловчто вы хотите посчитать.Это должно работать нормально в вашем текущем сценарии, так как вы все равно скачиваете все предложения.Но когда вы получаете больше данных, вы можете захотеть только прочитать / отобразить подмножество предложений, и в этом случае приведенный выше код будет подсчитывать только узлы в этом подмножестве.
Если вам все еще требуется подсчет всех предложений в этом случае, общий подход заключается в сохранении отдельного значения счетчика в базе данных, которое вы обновляете при каждом добавлении / удалении предложения.Подробнее об этом см .: