Обновление: когда вы вызываете .observeSingleEvent, вы вызываете метод асинхронно. Это означает, что метод начнет работать, но ответ придет позже и не будет блокировать основной поток. Вы вызываете этот метод, но данных пока нет, и поэтому вы возвращаете пустой словарь.
Если вы используете блок завершения, то вы получите данные, как только действие метода будет завершено.
func downloadDailyQuote(completion: @escaping ([String:String]) -> Void) {
let reference = Database.database().reference().child("daily")
reference.observeSingleEvent(of: .value) { (snap) in
if let dictionaryWithData = snap.value as? [String:String] {
completion(dictionaryWithData)
} else {
completion(["" : ""])
}
}
}
Я уверен, что вы не можете этого сделать, по крайней мере, не хотите, чтобы вы могли публиковать в App Store.