首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将AlamofireImage下载到CoreData

将AlamofireImage下载到CoreData
EN

Stack Overflow用户
提问于 2017-07-07 23:37:47
回答 1查看 280关注 0票数 0

我想从json缓存图像和一些数据,以使持久化我知道Alamofire图像有它自己的chade方法,但我猜只有当应用程序处于活动状态时,应用程序关闭并再次打开chache被清除,所以我必须再次下载图像。因此,如果像这样下载我图像

代码语言:javascript
复制
image.af_setImage(withURL: url)

它是可以保存的

代码语言:javascript
复制
imageEntity.save(image.image)

不确定是确切的代码,但想法是将下载的图像保存为CoreData中的图像集。以及这种方法的逻辑背后的任何想法,以确定图像是否存在于coreData中,并从if not下载并保存到coreData显示

EN

回答 1

Stack Overflow用户

发布于 2017-07-07 23:47:05

CoreData不是为存储ImageData或大数据(文件)而设计的,而是仅用于存储字符串、日期、整数...就像一个普通的数据库。

如果要保存数据,可以使用AlamofireImageCache并将CoreData实体中的图像标识符另存为字符串。这是最简单的方法。

代码语言:javascript
复制
let imageCache = AutoPurgingImageCache(
    memoryCapacity: 100_000_000,
    preferredMemoryUsageAfterPurge: 60_000_000
)
imageCache.add(yourImage, withIdentifier: "YourImageIdentifier")
imageEntity.identifier = "YourImageIdentifier"

然后,如果你想得到你的图像,你可以这样做,例如:

代码语言:javascript
复制
let cachedAvatar = imageCache.image(withIdentifier: imageEntity.identifier)

有关缓存的更多信息,请查看AlamofireImage文档:https://github.com/Alamofire/AlamofireImage

更新

如果你想在硬盘上制作你自己的ImageCache,这里有一个存储镜像的例子:

代码语言:javascript
复制
func saveImage(image:UIImage){

     if let data = UIImagePNGRepresentation(image) {

            let documentPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]!
            let filename = documentPath.appendingPathComponent("YourImageName")
            try? data.write(to: filename)
     }
}

func getImage(ForName name:String) -> UIImage?{ 
    let documentPath =    FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]!   
    let filename = documentPath.appendingPathComponent("YourImageName")         
     return UIImage(contentsOf:URL(fileURLWithPath: filename)) 
 }

希望它能帮上忙!皮埃尔

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44974760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档