У меня есть URLSession
, который запускается с viewDidLoad
. Возвращает JSON, который содержит URL для изображения. Итак, чтобы получить это изображение, я запускаю еще один URLSession
прямо из блока завершения JSON Decoder, который вызывается из блока завершения первого URLSession
. Вот код для этого:
//THIS IS CALLED FROM viewDidLoad()
let task = urlSession.dataTask(with: url!) { (data, response, error) in
guard error == nil else {
print ("Error while fetching collections: \(String(describing: error))")
return
}
if let data = data, let string = String(data: data, encoding: .utf8) {
print (string)
URL_Request_Handler.parsingJSON(fromData: data, completion: {(result) in
if let result = result {
print ("JSON IS CONVERTED")
print (result)
//This method creates another session and fires it
self.getFinalCollectionFromResult(result)
}
})
}
}
task.resume()
А вот метод getFinalCollectionFromResult
:
private func getFinalCollectionFromResult(_ result: Result_Collection) {
let task = URLSession.shared.dataTask(with: URL(string:result.cover_photo.url)!, completionHandler: { (data, response, error) in
if error != nil {
print("Errror")
}
if let data = data, let image = UIImage(data: data) {
DispatchQueue.main.async {
self.collection = Collection(title: result.title, image: image)
self.collectionViewLayout.collectionView?.reloadData()
}
}
})
task.resume()
}
Можно ли создать еще один сеанс прямо из блока завершения первого?