2016-07-05 73 views
1

我被一個問題困住了。我想用一些文本和配置文件圖像填充tableview,這可以改變我使用它的功能。如何使用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 
} 

這個工程到用戶scrolles非常快的一個不同的用戶的圖像將顯示,直到請求被滿足的點。因此,使這種情況發生,並使用數組作爲圖像。我也試過了。但是因爲它的異步,圖像會以錯誤的順序進入數組。所以回到HanekeSwift。我閱讀文檔,看到我在磁盤上有一個緩存,但我無法清除或刪除它。

清除緩存我也嘗試: NSURLCache.sharedURLCache()removeAllCachedResponses()

但我沒有做任何事情。它在Alamofire的情況下工作,但它也不是一個好的解決方案。

我想使用hanekeSwift,因爲HanekeSwift速度足以獲得所有圖像。但是每當控制器加載時我想清除緩存。

任何建議,將不勝感激!

Cees

+1

你試過了:'Shared.imageCache.removeAll()'? – riik

回答

0

我發現了一個問題。

首先,我運行的是舊版本的pod。所以更新後,我可以使用該功能。

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 
} 

現在的工作,但刪除緩存中的所有其他小區被塗抹的時間似乎有點矯枉過正。

+0

注意:您可以在viewdidload中調用該函數。這可能是一個更好的解決方案。 – Cees