Я новичок в Свифте. Я пытаюсь получить имя данного идентификатора в моем коде, используя обработчик завершения. Моя проблема в том, что я хочу, чтобы мой обработчик выполнялся после получения идентификатора, а затем присваивал возвращаемое значение переменной. как я должен поймать возвращенное значение и использовать его сразу?
Это мой код вызова обработчика вместе с идентификатором и текстом.
let userId = data["MessageUser"]
self!.getName(id: userId!, completion: { fname in
print(fname)
}) /* How should I catch fname so that I can use it. */
let text = data["MessageText"]
Это код обработчика завершения:
func getName(id: String, completion: @escaping (_ fname: String) -> Void) {
let reference = Database.database().reference().child("users").child(id)
reference.observe( .value) { (snap) in
if let dictionaryWithData = snap.value as? [String:String],
let fname = dictionaryWithData["Fname"]
{
completion(fname)
} else {
completion("error")
}
}
}