如何使用HanekeSwiftSwift删除缓存?

How to delete cache using HanekeSwift Swift?

我遇到了一个问题。我想用一些文本和可以更改的个人资料图片填充表格视图,我为此使用了此功能。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell: CommonCellView!
    cell = self.tableView.dequeueReusableCellWithIdentifier("CommonCellView") as! CommonCellView
    cell.nameLabel.text = self.userCollection[indexPath.row].display_name
    cell.companyLabel.text = self.userCollection[indexPath.row].user_organisation
    cell.profileImage.hnk_setImageFromURL(NSURL(string: self.userCollection[indexPath.row].profile_picture)!)
    self.makeImageViewCircular(cell.profileImage.layer, cornerRadius: cell.profileImage.frame.height)
    cell.profileImage.clipsToBounds = true

    return cell
}

没什么好惊讶的。但是,当我更改自己的个人资料图片时,我会将其发送到 API 并重新访问此功能,它会显示缓存的图像。所以我想我可能会尝试一些不同的东西,为什么不使用 Alamofire 获取每个单元格的所有图像。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell: CommonCellView!
    cell = self.tableView.dequeueReusableCellWithIdentifier("CommonCellView") as! CommonCellView
    cell.nameLabel.text = self.userCollection[indexPath.row].display_name
    cell.companyLabel.text = self.userCollection[indexPath.row].user_organisation
   cell.profileImage.image = UIImage()
    //getting the cell image
    Alamofire.request(.GET, self.userCollection[indexPath.row].profile_picture)
        .response {(request, response, avatarData, error) in

                        let img = UIImage(data: avatarData!)
                        cell.profileImage.image = img

    }
    self.makeImageViewCircular(cell.profileImage.layer, cornerRadius: cell.profileImage.frame.height)
    cell.profileImage.clipsToBounds = true

    return cell
}

这在用户滚动速度非常快的情况下会显示不同用户的图像,直到请求得到满足。好的,所以让其他人发生这种情况并为图像使用数组。我也试过了。但是因为它是异步的,图像会以错误的顺序进入数组。回到 HanekeSwift。我阅读了文档,看到我在磁盘上有一个缓存,但我无法清除或删除它。

清除缓存我也试过: NSURLCache.sharedURLCache().removeAllCachedResponses()

但我什么也没做。它适用于 Alamofire 情况,但它也不是一个好的解决方案。

我想使用 hanekeSwift,因为 HanekeSwift 足够快,可以获取所有图像。但我想在每次控制器加载时清除缓存。

如有任何建议,我们将不胜感激!

塞斯

我发现了一个问题。

首先我是 运行 旧版本的 pod。所以更新后我可以使用这个功能。

Shared.imageCache.removeAll()

将 haneke 导入控制器后。

最后的代码看起来像这样。 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell: CommonCellView!
    cell = self.tableView.dequeueReusableCellWithIdentifier("CommonCellView") as! CommonCellView
    cell.nameLabel.text = self.userCollection[indexPath.row].display_name
    cell.companyLabel.text = self.userCollection[indexPath.row].user_organisation
    cell.profileImage.image = UIImage()
    //getting the cell image
    cell.profileImage.hnk_setImageFromURL(NSURL(string: self.userCollection[indexPath.row].profile_picture)!)
    //deleting it from cache
    Shared.imageCache.removeAll()
    self.makeImageViewCircular(cell.profileImage.layer, cornerRadius: cell.profileImage.frame.height)
    cell.profileImage.clipsToBounds = true

    return cell
}

它现在可以工作了,但是在其他单元格被填充时一直删除缓存似乎有点过分了。