如何使用HanekeSwift Swift删除缓存?

时间:2016-07-05 10:44:22

标签: ios swift caching haneke

我遇到了问题。我想用一些文本和一个可以改变的配置文件图像填充一个tableview,我会使用这个函数。

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
}

这适用于用户滚动非常快的点,将显示不同用户的图像,直到请求得到满足。 Okey所以让它发生在其他地方,并使用数组的图像。我也试过了。但由于它的异步,图像会以错误的顺序进入数组。回到HanekeSwift。我阅读了文档,看到我在磁盘上有一个缓存,但我无法清除或删除它。

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

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

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

任何建议都将不胜感激!

塞斯

1 个答案:

答案 0 :(得分:0)

我发现了一个问题。

首先我运行的是旧版本的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
}

它现在可以正常工作,但是在其他单元格被填满时一直移除缓存似乎有点矫枉过正。