Я использую функцию Firebase .getSingleEventOf
для чтения данных из моей базы данных в моей программе, и это асинхронная функция. Как мне сделать его синхронным (или сделать другую синхронную функцию для размещения кода)?
Я пытался использовать данные, переданные через функцию, но она не работала! Он возвращает только 0 элементов, хотя я знаю, что у меня есть данные с конкретными буквами в моей базе данных.
import Foundation
import Firebase
struct CompeteUserFinderService {
static func findCompetitors(contains letters: String?) -> [String] {
//Make sure there was an input
guard let letters = letters else { return [] }
var usernames = [String]()
//Database reference
let ref = Database.database().reference().child("usernames")
ref.observeSingleEvent(of: .value) { (snapshot) in
//Creates an array of all values in the usernames branch
let value = Array((snapshot.value as! [String: Any]).keys)
usernames = value.map { $0.lowercased() }.filter { $0.contains(letters.lowercased()) }
}
return usernames
}
}