我正在使用'AlamoFireImage'下载图像文件。
然后,我使用List<Data>
和NSFileManager
方法将它们保存在目录中。
但是当我尝试检索保存的图像时,它仅返回第一个文件。虽然它应该已经保存了15张图片。
这是我保存图像文件的功能:
CreateFile
这是我下载它们的功能:
func getImage(url: String) {
Alamofire.request("https://www.tandori.ir/uploads/categories/" + url).responseImage { (response) in
if response.result.value != nil {
do {
let fileManager = FileManager.default
let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(url)
let image = UIImage(named: url)
let imageData = image?.jpegData(compressionQuality: 0.2)
fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
print(paths)
}
catch let error as NSError {
print(error)
}
}
}
}
当我尝试检索保存的图像时,我在Console上收到此错误:
“ BOMStream BOMStreamWithFileAndSys(int,off_t,size_t,int,char *,BomSys *):读取:没有这样的文件或目录”
我正在尝试在收藏夹视图中显示这些图像。
这是我在ViewController中的代码:
func launchApp() {
let imgTitiles = UserDefaults.standard.array(forKey: "imgsArray")!
for pic in imgTitiles {
self.getImage(url: pic as! String)
print("done")
}
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let resultViewController = storyBoard.instantiateViewController(withIdentifier: "mainTab") as! TandoriTabView
self.present(resultViewController, animated: true)
}
似乎是什么问题?
谢谢!
答案 0 :(得分:-1)
实际上,您使用Alamofire下载图像是异步进行的。因此,在显示ViewController时,您只有很少的图像。在下面的代码中,将您的代码同步修改为getImage()。希望它对您有用。
func getImage(url: String) {
if let image = UIImage(named: url) {
let fileManager = FileManager.default
let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(url)
let imageData = image?.jpegData(compressionQuality: 0.2)
fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
print(paths)
}
}