Swift. Как отобразить картинку с сервера в UIImageView?

Всем привет! У меня в приложении хранится ответ GET запроса с массивом треков(название трека, исполнитель и ссылка на картинку). Эту информацию я хочу поместить в свою кастомную ячейку и вывести списком в таблице. название трека и исполнитель без проблем добавляются в label-ы. А вот с картинкой у меня проблемы, уже кучу примеров посмотрел, но все равно не получается добавить картинку в UIImageView.

Создание ячейки:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TrackTableViewCell
    
    guard let data = data else { return cell}
    
    // тут пытался получить картинку
    if let url = URL(string: (data[indexPath.row].artworkUrl100)!) {
        if let data = try? Data(contentsOf: url) {
            cell.imageTrack = UIImage(data: try! Data(contentsOf: data))
        }
    }
    
    cell.trackName.text = data[indexPath.row].trackName
    cell.artistName.text = data[indexPath.row].artistName
    
    return cell
}

Ответы (1 шт):

Автор решения: Dante

Добавил URLSession для картинок при создании ячейки и все заработало, картинки тоже начали подгружатся.

Код создания ячейки после исправления:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TrackTableViewCell
    
    guard let data = data else { return cell}
    
    guard let apiURL = URL(string: data[indexPath.row].artworkUrl100!) else { return cell }

    URLSession.shared.dataTask(with: apiURL) { data, _, _ in
        guard let data = data else { return }
        
        DispatchQueue.main.async {
            cell.imageTrack.image = UIImage(data: data)
        }
    } .resume()
    
    cell.trackName.text = data[indexPath.row].trackName
    cell.artistName.text = data[indexPath.row].artistName
    
    return cell
}
→ Ссылка