【问题标题】:Swift Images to Cache快速缓存图像
【发布时间】:2019-06-19 18:26:44
【问题描述】:

我正在解析数据并检查图像是否在缓存中。如果是,设置它,如果不设置它为默认并发送到缓存。

将它发送到缓存的部分一直给出 nil ???

任何帮助将不胜感激

Pic_STR = "https://myserver/Pictures/" + Pic + ".jpg" 让 url = URL(string: Pic_STR)

            if let imageFromCache = imageCache.object(forKey: Pic_STR as AnyObject) as? UIImage {
                data.photo = imageFromCache
                return
            } else {
                data.photo = UIImage(named: "Default")
                let imageCache = NSCache<NSString, AnyObject>()
                URLSession.shared.dataTask(with: url!) { data, response, error in
                    guard let data = data, error == nil else { return }

                        let imageToCache = UIImage(data: data)
                        imageCache.setObject(imageToCache!, forKey: self.Pic_STR as NSString)
                        //self.image = imageToCache

                    }.resume()
            }

【问题讨论】:

  • 您需要将imageCache 对象声明为视图控制器的属性或将其声明为单例的属性。
  • 是的,声明对象摆脱了错误,但代码仍然无法运行,ATS 系统信任失败,ATS 系统信任失败,TIC SSL 信任错误
  • 尝试在您的信息列表中设置 NSAllowsArbitraryLoads
  • 设置 NSAllowArbitraryLoads 不起作用

标签: swift image caching


【解决方案1】:

经过多次试验,我终于找到了解决方案。我相信它可以改进,但它有效。我更喜欢使用扩展程序,但不知道如何使用。

struct imageData {
    let image: UIImage?
    let name: String?
}

var newImage = UIImage()
var myImages = [imageData]()


   let imageString= "https://myserver/Pictures/" + Pic + ".jpg"
            let imageURL = URL(string: imageString)

            CON2 = false

            for pics in myImages {
                if pics.name == Pic {
                    data.photo = pics.image
                    CON2 = true
                }
            }

            if CON2 == false {
                let data2 = try? Data(contentsOf: imageURL!)

                if let imageData = data2 {
                    newImage = UIImage(data: imageData)!
                }

                let newData = imageData(image: newImage, name: Pic) as imageData
                myImages += [newData]
                data.photo = newImage
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-11
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多