Как удалить кеш с помощью 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 достаточно быстр, чтобы получить все изображения. но я хочу очистить кэш каждый раз, когда загружается контроллер.
Мы ценим любые предложения!
Кеес
1 ответ
Я нашел проблему.
Сначала я запускал старую версию стручка. Поэтому после обновления я мог бы использовать функцию.
Shared.imageCache.removeAll ()
после импорта ханеке в контроллер.
последняя часть кода выглядела следующим образом. 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
}
это работает сейчас, но удаление кеша все время, когда другая ячейка заполняется, кажется немного излишним.