我正在从网上下载一些图书的封面图片并将其保存到图书馆/缓存/临时。这很好用,我已经验证了它的宽度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是相同的。此外,在我尝试阅读之前保存图像。
为什么我只能显示默认图像?