我遇到了问题。我想用一些文本和一个可以改变的配置文件图像填充一个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足够快以获取所有图像。但我希望每次控制器加载时清除缓存。
任何建议都将不胜感激!
塞斯
答案 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
}
它现在可以正常工作,但是在其他单元格被填满时一直移除缓存似乎有点矫枉过正。