如何下载大量图像并将其保存到swift中的核心数据?

如何下载大量图像并将其保存到swift中的核心数据?,swift,core-data,Swift,Core Data,在我目前使用的应用程序中,我需要下载100多张图片并将其保存到核心数据中。只要我打开ViewController 注意:我已经尝试使用翠鸟或SDWebImage来缓存图像,并通过将缓存时间设置为7天或更长时间来保存图像,但没有效果。它只是不断地再次下载相同的图像,而不是在几个小时后从缓存图像中使用它 我只想下载一次图像并保存它 我当前下载图像的实现如下所示 注意:我使用(允许外部存储)将图像存储为二进制数据 或者我应该只将图像存储在文档目录中 你可以试试翠鸟的ImageCache 第一步:在缓存

在我目前使用的应用程序中,我需要下载100多张图片并将其保存到核心数据中。只要我打开ViewController

注意:我已经尝试使用翠鸟或SDWebImage来缓存图像,并通过将缓存时间设置为7天或更长时间来保存图像,但没有效果。它只是不断地再次下载相同的图像,而不是在几个小时后从缓存图像中使用它

我只想下载一次图像并保存它

我当前下载图像的实现如下所示

注意:我使用(允许外部存储)将图像存储为二进制数据


或者我应该只将图像存储在文档目录中

你可以试试翠鸟的ImageCache

第一步:在缓存中查找图像

ImageCache.default.isImageCached(forKey: "key_for_image")
如果找到图像,可以使用以下方法检索图像:

ImageCache.default.retrieveImage(forKey: "key_for_image", options: nil) { 
}
注意:您也可以使用retrieveImage而不是isImageCached,并检查图像是否为零

第二步:如果图像尚未在缓存中,请下载该图像

ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) {
}
第三步:存储图像(您可以使用存储图像的任何变体)

示例1

let isImageCached = ImageCache.default.isImageCached(forKey: "key_for_image")
if isImageCached {
    ImageCache.default.retrieveImage(forKey: "key_for_image", options: nil) { image, cacheType in
    imageView.image = image
} else {
    ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) { (image, error, url,data) in
        if let image = image {
            imageView.image = image
            ImageCache.default.store(image, forKey: "key_for_another_image") 
        }
    }
}
ImageCache.default.retrieveImage(forKey: "key_for_image", options: nil) { image, cacheType in
    if let image = image {
        imageView.image = image
    } else {
        ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) { (image, error, url,data) in
        if let image = image {
            imageView.image = image
            ImageCache.default.store(image, forKey: "key_for_image") 
        }
    }
}
示例2

let isImageCached = ImageCache.default.isImageCached(forKey: "key_for_image")
if isImageCached {
    ImageCache.default.retrieveImage(forKey: "key_for_image", options: nil) { image, cacheType in
    imageView.image = image
} else {
    ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) { (image, error, url,data) in
        if let image = image {
            imageView.image = image
            ImageCache.default.store(image, forKey: "key_for_another_image") 
        }
    }
}
ImageCache.default.retrieveImage(forKey: "key_for_image", options: nil) { image, cacheType in
    if let image = image {
        imageView.image = image
    } else {
        ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) { (image, error, url,data) in
        if let image = image {
            imageView.image = image
            ImageCache.default.store(image, forKey: "key_for_image") 
        }
    }
}
一种可能是url的MD5散列


翠鸟备忘单可以找到

使用图书馆..@vaibhav感谢您的回复。翠鸟用于图像缓存。我不想缓存图像,因为它不符合我的要求,我也尝试过SDWebImage。你到底有什么问题?请更具体地回答您的问题。@user9943042一旦开始应用diff-2下载方法,您可以忽略维护缓存。@vaibhav抱歉,我不明白。谢谢您的答复,我将尝试此方法