【问题标题】:How to write images as NSData to Realm from Kingfisher?如何将图像作为 NSData 从 Kingfisher 写入 Realm?
【发布时间】:2017-03-04 17:31:07
【问题描述】:

我在swift 2.3 中使用Realm database 和Kingfisher framework 来获取图像。 我通过JSON从服务器获取图像

let urls = NSURL(fileURLWithPath: newsRealm.newsImage)
let prefetcher = ImagePrefetcher(urls: [urls], optionsInfo: nil, progressBlock: nil, completionHandler: {
(skippedResources, failedResources, completedResources) -> () in
print("These resources are prefetched: \(completedResources)")
})
prefetcher.start()

成功了,但是Realm database中的图片是NSData,如何将接收到的数据从Kingfisher写入Realm为NSData

领域类:

class News: Object {
  dynamic var newsImage: String = ""
  dynamic var images: NSData?
}

嗨!我无法将图像写入我的数据库:

let urls = NSURL(fileURLWithPath: newsRealm.newsImage)
let prefetcher = ImagePrefetcher(urls: [urls], optionsInfo: nil, progressBlock: nil, completionHandler:
{(skippedResources, failedResources, completedResources) -> () in
print("These resources are prefetched: (completedResources.description)")
let images: [NSData] = completedResources
newsRealm.images = images

【问题讨论】:

    标签: ios swift xcode realm kingfisher


    【解决方案1】:

    使用optionsInfo: [.TargetCache(myCache)] 设置缓存url,您可以在其中检索数据(如here 所述), 或使用example retrieveImage 检索UIImage,它可以转换为NSData,如here。

    【讨论】:

    • 嗨!我无法将图像写入我的数据库,我这样做: let urls = NSURL(fileURLWithPath: newsRealm.newsImage) let prefetcher = ImagePrefetcher(urls: [urls], optionsInfo: nil, progressBlock: nil, completionHandler: { (skippedResources, failedResources, completedResources ) -> () in print("这些资源是预取的: (completedResources.description)") let images: [NSData] = completedResources newsRealm.images = images
    【解决方案2】:

    completedResources 不是NSData 的数组。 completedResources 是 Resource 的数组。 Resource 持有 cacheKey 和 downloadURL。您应该使用cacheKey 从缓存中检索图像,然后将图像转换为NSData。然后将数据存储到 Realm。

    let images: [NSData] = completedResources.map { (resource) -> NSData in
        let image = ImageCache.default.retrieveImageInDiskCache(forKey: resource.cacheKey)!
        return UIImagePNGRepresentation(image)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-22
      • 2018-02-23
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多