Эта функция, которую вы передаете для наблюдения, напечатана как функция, которая возвращает void:
{(snapshot) in
let num = snapshot.childrenCount
return Int(num)
})
Вы можете видеть из документов API для наблюдения :
Декларация
func observe(_ eventType: DataEventType, with block: @escaping (DataSnapshot) -> Void) -> UInt
Тип функции - (DataSnapshot) -> Void
, что означает, что она не может возвращать значение.Но вместо этого вы возвращаете Int(num)
.
Вы не сможете вернуть результат запроса к базе данных из collectionView (), поскольку наблюдатель базы данных является асинхронным и немедленно возвращается.Это даст вам значение через некоторое время, и у вас нет гарантии, сколько времени это займет.