Swift TableView对图像进行多个网络请求

时间:2017-10-10 01:40:40

标签: swift uitableview alamofire

我有一张快速的桌子。每当我向上和向下滚动tableview时,即使图像已经加载,它也会再次运行getImageForCell函数。有没有办法让这种情况发生。以下是我的代码。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "ReviewTableViewCell", for: indexPath) as! ReviewTableViewCell

    let review = json[reviewType][indexPath.row]
    cell.nameLabel.text = review[userType]["name"].stringValue
    cell.reviewLabel.text = review["message"].stringValue
    cell.dateLabel.text = review["created_at"].stringValue
    cell.ratingStars.rating = Double(review["rating"].intValue)
    getImageForCell(url: review[userType]["photo_url"].stringValue, cell: cell)

    return cell
}

func getImageForCell(url: String, cell: ReviewTableViewCell) {
    Alamofire.request(url).responseImage { response in
        if let downloadedImage = response.result.value {
            print("downloaded image \(downloadedImage)")
            DispatchQueue.main.async {
                cell.profileImageView.image = downloadedImage
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

这是因为没有缓存图像,也没有重复使用单元格 - 在您的视图中,您每次都在重新创建单元格 - 这不会特别修复图像问题,但会提高性能。我最喜欢的缓存图片扩展名是翠鸟(没有隶属关系),虽然alamofire也可用于缓存图片。

https://github.com/onevcat/Kingfisher