I am currently learning Swift for my upcoming internship and I would like some feedback on nesting data tasks. Here I am trying to fetch a JSON that contains the url to an image and then fetch the image from the url. Is this solution acceptable ?
Thank you for your feedback
func fetchImageOfTheDay() {
guard let url = URL(string: "\(pictureOfTheDayUrl)?api_key=\(api_key)") else {
fatalError()
}
URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data else {
return
}
let decoder = JSONDecoder()
guard let imageText = try? decoder.decode(ImageOfTheDay.self, from: data) else {
fatalError()
}
guard let imageUrl = URL(string: imageText.url) else {
fatalError()
}
URLSession.shared.dataTask(with: imageUrl) { data, response, error in
guard let data = data else {
return
}
guard let image = UIImage(data: data) else {
fatalError()
}
DispatchQueue.main.async {
self.imageOfTheDay = image
self.imageText = imageText
}
}.resume()
}.resume()
}