我需要下载一个图像并在ImageView
上显示,但是在显示之后,我需要从设备中删除图像。但总是当我再次打开应用程序时,图像已经加载。
代码:
func getPhoto(pathPhoto: String, imageview: UIImageView) {
activityIndicator = UIActivityIndicatorView(frame: CGRectMake(20, 20, imageview.frame.size.width - 40, imageview.frame.size.height - 40))
activityIndicator.color = UIColor(red: 64.0/255.0, green: 109.0/255.0, blue: 157.0/255.0, alpha: 1.0)
activityIndicator.startAnimating()
imageview.addSubview(activityIndicator)
var photoUrlString = urlImages
photoUrlString += pathPhoto
var imgURL: NSURL = NSURL(string: photoUrlString)!
let request: NSURLRequest = NSURLRequest(URL: imgURL)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse!,data: NSData!,error: NSError!) -> Void in
if error == nil {
if data == nil {
NSLog("Erro ao baixar")
} else {
self.image = UIImage(data: data)
dispatch_async(dispatch_get_main_queue(), {
self.activityIndicator.stopAnimating()
self.activityIndicator.removeFromSuperview()
imageview.image = self.image
})
}
}
})
}
答案 0 :(得分:2)
原因是NSURLConnection
在本地自动缓存对HTTP请求的响应。因此,虽然您可能没有将图像保存在应用程序的目录中,但系统会为您保存图像。
如何处理此问题取决于您删除设备上图像的原因。如果是因为您希望每次都提供一个新的图像,并且您可以控制服务器,那么通过设置正确的HTTP标头来告知客户端不要缓存图像,这可能是有意义的。
如果您有某种数据安全原因,可以手动清除缓存,entire thing或just one request。
关于NSURLCache还有一个很好的NSHipster article。