Swift, функция: дождаться получения данных прежде чем вернуть результат
Есть глупая проблема, которую я не могу решить. У меня имеется функция, которая получив входной параметр обрабатывает его (получает данные из сети), и возвращает результат. Естественно, return срабатывает раньше, чем данные получены и на выходе я получаю nil. Подскажите, как решить такую проблему?
Код у меня примерно такой:
func loadData(id: String) -> String {
var result: String?
// Здесь блок кода, который на основании id получает String параметр с сервера и присваивает его переменной result:
result = "Some string"
return result
}
Ответы (1 шт):
Автор решения: schmidt9
→ Ссылка
Вот пример, главное понять принцип как это работает
func loadData(id: String, completion: @escaping (String) -> Void) {
let session = URLSession(configuration: .default)
session.dataTask(with: URL(string: "some_url")!) { (data, response, error) in
// обработка error ...
// анализ response ...
// получаем например строку из data ...
let str = "data_result"
completion(str)
}
}
loadData(id: "str") { result in
print(result)
}