Я пытаюсь обновить label.text с ответом сервера. Но метка обновляется только после второго вызова метода. Что случилось?
dispatch_async(dispatch_get_main_queue()) устарел. Я изменил его на DispatchQueue.main.async, но он не работает.
Пример для swift 2: Быстрое изменение текста метки после загрузки содержимого веб-страницы
Не рабочий код:
@IBAction func buttonAction(_ sender: Any) {
let url = URL(string: "https://api.nasa.gov/planetary/apod?date=2005-2-22&api_key=DEMO_KEY")!
let task = URLSession.shared.dataTask(with: url) { [weak self] (data, response, error) in
if let data = data,
let stringData = String(data: data, encoding: .utf8) {
print("stringData: \(stringData)") // prints every time
DispatchQueue.main.async {
// change label text after second calling.
// ??? How to change label text at first calling ???
self?.mainLabel.text = stringData
}
}
}
task.resume()
}
mainLabel
нулевым при первом вызове? - person Ankit Jayaswal   schedule 13.04.2018