Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何获取缓存图像SDWebImage的数据_Ios_Swift_Sdwebimage - Fatal编程技术网

Ios 如何获取缓存图像SDWebImage的数据

Ios 如何获取缓存图像SDWebImage的数据,ios,swift,sdwebimage,Ios,Swift,Sdwebimage,我正在使用SDWebImage库在UICollectionView中缓存web图像: cell.packItemImage.sd_setImage(with: URL(string: smileImageUrl[indexPath.row])) 但是我想将缓存的图像保存在本地文件中,而不是再次下载它们 FileManager.default.createFile(atPath: newPath, contents: Data(contentsOf: URL(string: snapchild

我正在使用SDWebImage库在UICollectionView中缓存web图像:

cell.packItemImage.sd_setImage(with: URL(string: smileImageUrl[indexPath.row]))
但是我想将缓存的图像保存在本地文件中,而不是再次下载它们

FileManager.default.createFile(atPath: newPath, contents: Data(contentsOf:  URL(string: snapchildvalue[Constants.smiles.smileImageUrl] as! String)!), attributes: nil)

有没有一种方法可以在从url下载图像后获取缓存图像的数据。基本上,它根据url保存图像,下一次如果图像可用于url。它只需从缓存中获取该图像。因此,如果图像已经下载到设备上,将立即调用下面的方法

    imgView.sd_setImage(with: URL(string:url), completed: { (image, error, type, url) in
         imgView.image = image
         //Do any thing with image here. This will be called instantly after image is downloaded to cache. E.g. if you want to save image (Which is not required for a simple image fetch, 
         //you can use FileManager.default.createFile(atPath: newPath, contents: UIImagePNGRepresentation(image), attributes: nil)
     })

但是,如果您想将该图像保存到其他地方或修改它或其他任何内容,您可以在上面的完成块中执行

默认情况下,SDWebImage会自动缓存下载的图像。您可以使用
SDImageCache
从缓存中检索图像。当前应用程序会话有一个更快的内存缓存,还有磁盘缓存。用法示例:

if let image = SDImageCache.shared().imageFromDiskCache(forKey: imageURL.absoluteString) {
//use image
}

if let image = SDImageCache.shared().imageFromMemoryCache(forKey: imageURL.absoluteString) {
//use image
}

还要确保在文件中导入SDWebImage。(如果您使用的是Swift/Carthage,则会发现,
import WebImage

SDWebImage
已经在本地拥有此类缓存文件

  • 使用您选择的命名空间创建一个
    SDImageCache
  • 尝试使用
    imageCache.queryDiskCache
  • 如果图像存在,请将其设置为imageview,如果不存在,请使用
    sd_setImage
    获取图像,然后使用
    SDImageCache.shared()将其保存到本地缓存。存储
  • 键通常是图像url字符串

    类似的内容可能不正确:

    imageCache.queryDiskCache(forKey: urlForImageString().absoluteString, done: {(_ image: UIImage, _ cacheType: SDImageCacheType) -> Void in
        if image {
            self.imageView.image = image
        }
        else {
            self.imageView.sd_setImage(withURL: urlForImageString(), placeholderImage: UIImage(named: "placeholder")!, completed: {(_ image: UIImage, _ error: Error, _ cacheType: SDImageCacheType, _ imageURL: URL) -> Void in
                SDImageCache.shared().store(image, forKey: urlForImageString().absoluteString)
            })
        }
    })
    

    imgView是什么?如何在swift代码中定义它?@Markon UIImageView