2017-09-05 3 views
0

Voilà comment je sauvé les imagesObtenir des images de document Directory fichier non chemin Swift 3

let format = DateFormatter() 
    format.dateFormat="MMMM-dd-yyyy-ss" 
    let currentFileName = "\(format.string(from: Date())).img" 
    print(currentFileName) 

    // Save Images 
    let fileMgr = FileManager.default 
    let dirPath = fileMgr.urls(for: .documentDirectory, in: .userDomainMask)[0] 
    let imageFileUrl = dirPath.appendingPathComponent(currentFileName) 



     do { 

      try UIImagePNGRepresentation(returnedImages)!.write(to: imageFileUrl) 

      print("Image Added Successfully") 

    } catch { 

     print(error) 

     } 

code Ci-dessous je me sers pour récupérer des images, mais je reçois l'URL au lieu du fichier d'image pour remplir tableview. Toute aide serait appréciée

let fileManager = FileManager.default 
    let imageUrl = fileManager.urls(for: .documentDirectory, in: .userDomainMask) [0].appendingPathComponent("img") 

    print("Your Images:\(imageUrl)") 
+0

Je pense que vous pouvez utiliser UIImage (contentsOfFile: yourURL) pour obtenir l'image de cet url – 3stud1ant3

+0

@ 3stud1ant3 merci pour votre réponse, mais quand je fais cela comme vous avez suggéré: let image: UIImage = UIImage (contentsOfFile: imageUrl). Je reçois une erreur "Impossible de convertir la valeur de type 'URL' en type d'argument attendu 'String'" –

+0

Quelle erreur obtenez-vous? – 3stud1ant3

Répondre

4

C'est simplement parce que le nom de votre image n'est pas valide. Utilisez le débogueur pour trouver la valeur exacte de imageUrl, je parie que c'est quelque chose comme ça .../Documents/img. Ce que vous voulez, c'est plutôt .../Documents/Sep-04-2017-12.img

Vous devez stocker currentFileName dans le contrôleur de vue pour pouvoir y faire référence plus tard.

De plus, votre stratégie de dénomination est plutôt fragile. De nombreuses images peuvent finir par partager un nom.


Si vous avez un dossier plein d'images, vous pouvez itérer sur ce dossier pour récupérer les fichiers img:

let fileManager = FileManager.default 
let documentDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] 
let directoryContents = try! fileManager.contentsOfDirectory(at: documentDirectory, includingPropertiesForKeys: nil) 
for imageURL in directoryContents where imageURL.pathExtension == "img" { 
    if let image = UIImage(contentsOfFile; imageURL.path) { 
     // now do something with your image 
    } else { 
     fatalError("Can't create image from file \(imageURL)") 
    } 
} 
+0

merci pour votre réponse. Vous avez raison, c'est la valeur que je reçois. Cependant, chaque fois que les images sont sauvegardées, elles sont sauvegardées comme ceci "Septembre-04-2017-11.img". J'essaie de récupérer les images dans un contrôleur de vue séparé. –

+0

Puis [parcourez] (https://developer.apple.com/documentation/foundation/filemanager/1414584-contentsofdirectory) votre dossier Documents et sélectionnez tous les fichiers '.img'. Ou vous pouvez passer le tableau des noms de fichiers au deuxième contrôleur –

+0

Chaque fois que j'essaie de parcourir le dossier de documents, je reçois "Le dossier" .img "n'existe pas". –