Я пытаюсь взять строку из данных JSON и установить ее в переменную.Моя проблема в том, что переменная отображается как пустая.Я использую JSONDecoder для извлечения данных JSON и установки строки в переменную вне функции.Затем я хочу использовать эту переменную внутри другой функции
. Когда я печатаю переменную, она по-прежнему отображается пустой, даже после загрузки функции.Внутри функции строка отображается правильно.
Код:
var filmTitle = ""
override func viewDidLoad() {
super.viewDidLoad()
loadFilms()
print(self.filmTitle) //Prints as an empty string
}
func loadFilms() {
let id = filmId
let apiKey = "97a0d64910120cbeae9df9cb675ad235"
let url = URL(string: "https://api.themoviedb.org/3/movie/\(id)?api_key=\(apiKey)&language=en-US")
let request = URLRequest(
url: url! as URL,
cachePolicy: URLRequest.CachePolicy.reloadIgnoringLocalCacheData,
timeoutInterval: 10 )
let session = URLSession (
configuration: URLSessionConfiguration.default,
delegate: nil,
delegateQueue: OperationQueue.main
)
let task = session.dataTask(with: request, completionHandler: { (dataOrNil, response, error) in
if let data = dataOrNil {
do { let details = try! JSONDecoder().decode(Details.self, from: data)
self.filmTitle = details.title
print(self.filmTitle) //string prints correctly
}
}
})
task.resume()
}
Что мне не хватает, чтобы правильно установить строку для переменной?