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