要缓存的Swift图像

要缓存的Swift图像,swift,image,caching,Swift,Image,Caching,我正在分析数据并检查图像是否在缓存中。如果是,则将其设置为默认值,如果不是,则将其设置为默认值并发送到缓存 将其发送到缓存的部分一直给出零 任何帮助都将不胜感激 Pic_STR=“”+Pic+”.jpg“ 让url=url(字符串:Pic_STR) 如果让imageFromCache=imageCache.object(forKey:Pic_STR as AnyObject)作为?UIImage{ data.photo=imageFromCache 返回 }否则{ data.photo=UIIm

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

将其发送到缓存的部分一直给出零

任何帮助都将不胜感激

Pic_STR=“”+Pic+”.jpg“ 让url=url(字符串:Pic_STR)

如果让imageFromCache=imageCache.object(forKey:Pic_STR as AnyObject)作为?UIImage{
data.photo=imageFromCache
返回
}否则{
data.photo=UIImage(名为“默认”)
让imageCache=NSCache()
URLSession.shared.dataTask(带:url!){数据、响应、中的错误
guard let data=data,error==nil else{return}
让imageToCache=UIImage(数据:数据)
setObject(imageToCache!,forKey:self.Pic_STR作为NSString)
//self.image=imageToCache
}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
            }

您需要将
imageCache
对象声明为视图控制器的属性,或将其声明为单例的属性。是的,声明该对象已消除错误,但代码仍不工作,ATS失败的系统信任,ATS失败的系统信任,TIC SSL Trust Errortry在信息应用程序中设置NSAllowsArbitraryLoads设置NSAllowWarBitraryLoads无效
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
            }