Swift NSFileManager无法保存-没有此类文件或目录

Swift NSFileManager无法保存-没有此类文件或目录,swift,macos,alamofire,nsfilemanager,Swift,Macos,Alamofire,Nsfilemanager,我正在使用“AlamoFireImage”下载我的图像文件 然后,我使用NSFileManager和CreateFile方法将它们保存到一个目录中 但是当我试图检索保存的图像时,它只返回第一个文件。而它应该保存15幅图像 以下是我保存图像文件的功能: 这是我下载它们的功能: 当我尝试检索保存的图像时,控制台上出现以下错误: BOMStream BOMStreamWithFileAndSys(int、off、size、int、char*、BomSys*):读取:没有这样的文件或目录 我试图在集合视

我正在使用“AlamoFireImage”下载我的图像文件

然后,我使用
NSFileManager
CreateFile
方法将它们保存到一个目录中

但是当我试图检索保存的图像时,它只返回第一个文件。而它应该保存15幅图像

以下是我保存图像文件的功能:

这是我下载它们的功能:

当我尝试检索保存的图像时,控制台上出现以下错误:

BOMStream BOMStreamWithFileAndSys(int、off、size、int、char*、BomSys*):读取:没有这样的文件或目录

我试图在集合视图中显示这些图像

以下是我在ViewController中的代码:

有什么问题吗


提前谢谢

实际上,您使用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)
 }
}

请显示您的代码以检索保存的图像,包括有关何时调用的信息。在完成所有下载之前可能会调用它。@OOPer代码已更新。我找不到任何代码来等待所有下载的图像。。。这就是问题所在。对不起,我不使用Alamofire,也不能编写可验证的代码。当我无法验证我的代码时,我不会将其作为答案发布。@HamedJavaheri我不会为你做你的工作。其思想是,视图控制器从0个图像开始,当它们可用时,它会重新加载以显示它们,而不是假设它们已经存在。但是,没有文件扩展名,文件可以非常愉快地存在吗?
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)
}
//Get Images Directory Path Function.
func getDirectoryPath() -> String {
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let documentsDirectory = paths[0]
    return documentsDirectory
}


//Get Images Function.
func getImage(name : String) -> String {
    _ = FileManager.default
    let imagePAth = (self.getDirectoryPath() as NSString).appendingPathComponent(name)

    return imagePAth

}

 //Show Images in collectionView cells function.
 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = categoriesCollection.dequeueReusableCell(withReuseIdentifier: "categories", for: indexPath) as! categoriesCell
    let imageAddress = getImage(name: imgTitiles[indexPath.row] as! String) //TheRealShit
    cell.categoryImage.image = UIImage(contentsOfFile: imageAddress)
    return cell
}
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)
 }
}