从图书馆/缓存/临时/读取图像

时间:2017-04-28 22:27:39

标签: swift image swift3 uiimage

我正在从网上下载一些图书的封面图片并将其保存到图书馆/缓存/临时。这很好用,我已经验证了它的宽度Finder,路径是正确的,文件名是正确的。

我似乎无法从光盘读取图像,但路径正确且图像确实存在。

我在每次运行时都会获得库/缓存的URL。每当我需要该文件夹(保存封面图像的地方)时,我会附加一个常量的临时

获取库/缓存路径

self.cachesDirectory = try FileManager.default.url(for: .cachesDirectory, in: .userDomainMask, appropriateFor: nil, create: false)

保存图片(AssetsHandler.sharedInstance)

func tempSaveCover(withDataAndISBN data: Data, isbn: String){

    if let image = UIImage(data: data){
        if let pngRepresentation = UIImagePNGRepresentation(image){
            let path = self.cachesDirectory.appendingPathComponent(Constants.AssetsHandler.tempCoverPath, isDirectory: true).appendingPathComponent(isbn).appendingPathExtension("png")

            do{
                try pngRepresentation.write(to: path)
            }catch let error{
            print("Can't write png to disc: \(error.localizedDescription)")
            }
        }
    }
}

这就是URL的样子 file:/// Users / Joakim / Library / Developer / CoreSimulator / Devices / EBA74A27-B09C-4AFC-B825-ECDC37445053 / data / Containers / Data / Application / A2B398CF- 8535-492A-9787-D088C24ED661 /库/缓存/临时/ 9788203196195.png

阅读图片(AssetsHandler.sharedInstance)

func tempGetCover(withISBNNumber isbn: String) -> UIImage{
    let path = self.cachesDirectory.appendingPathComponent(Constants.AssetsHandler.tempCoverPath, isDirectory: true).appendingPathComponent(isbn).appendingPathExtension("png")

        if let cover = FileManager.default.contents(atPath: path.absoluteString){
            if let image = UIImage(data: cover) {
                return image
            }
        }
    /*if let image = UIImage(contentsOfFile: path.absoluteString){
        return image
    }*/
    return UIImage(named: "default-image")!

}

获取图片(图书类)

var coverImage: UIImage? {
    get{
        guard let idisbn = self.isbn else {return UIImage(named:"default-image")}

        /*if let image = UIImage(contentsOfFile: AssetsHandler.sharedInstance.path(for: idisbn).absoluteString){
            print("Image: ok")
            return image
        }*/
        return AssetsHandler.sharedInstance.tempGetCover(withISBNNumber: idisbn)
        //return UIImage(named:"default-image")
    }
    set(image){
        self.coverImage = image
    }
}

我已经确认传递参数ISBN是相同的。此外,在我尝试阅读之前保存图像。

为什么我只能显示默认图像?

0 个答案:

没有答案