comment utiliser writeToFile pour save l'image dans le directory du document?

// directoryPath is a URL from another VC @IBAction func saveButtonTapped(sender: AnyObject) { let directoryPath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL let urlSsortingng : NSURL = directoryPath.URLByAppendingPathComponent("Image1.png") print("Image path : \(urlSsortingng)") if !NSFileManager.defaultManager().fileExistsAtPath(directoryPath.absoluteSsortingng) { UIImageJPEGRepresentation(self.image, 1.0)!.writeToFile(urlSsortingng.absoluteSsortingng, atomically: true) displayImageAdded.text = "Image Added Successfully" } else { displayImageAdded.text = "Image Not Added" print("image \(image))") } } 

Je ne reçois aucune erreur mais l'image n'est pas enregistrée dans le document.

Le problème est que vous vérifiez si le dossier n'existe pas, vous devriez vérifier que le file existe. Aussi, vous devriez utiliser url.path! au lieu de url.absoluteSsortingng. Vous enregistrez également votre image jpeg en utilisant une extension de file png. Vous devriez utiliser .jpg.

 let documentsDirectoryURL = try! NSFileManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true) // create a name for your image let fileURL = documentsDirectoryURL.URLByAppendingPathComponent("Image1.jpg") if !NSFileManager.defaultManager().fileExistsAtPath(fileURL.path!) { if UIImageJPEGRepresentation(image, 1.0)!.writeToFile(fileURL.path!, atomically: true) { print("file saved") } else { print("error saving file") } } else { print("file already exists") } 

C'est ma réponse pour Swift 3 , combinant les 2 réponses ci-dessus:

 let documentsDirectoryURL = try! FileManager().url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) // create a name for your image let fileURL = documentsDirectoryURL.appendingPathComponent("Savedframe.png") if !FileManager.default.fileExists(atPath: fileURL.path) { do { try UIImagePNGRepresentation(imageView.image!)!.write(to: fileURL) print("Image Added Successfully") } catch { print(error) } } else { print("Image Not Added") } 
 @IBAction func saveButtonTapped(sender: AnyObject) { let directoryPath = try! NSFileManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true) let urlSsortingng : NSURL = directoryPath.URLByAppendingPathComponent("Image1.png") print("Image path : \(urlSsortingng)") if !NSFileManager.defaultManager().fileExistsAtPath(urlSsortingng.path!) { UIImageJPEGRepresentation(self.image, 1.0)!.writeToFile(urlSsortingng.path! , atomically: true) displayImageAdded.text = "Image Added Successfully" } else { displayImageAdded.text = "Image Not Added" print("image \(image))") } } 

Placez l'image dans un object NSData; écrire dans un file avec cette class est un jeu d'enfant, et cela réduira la taille du file.

En passant, je recommand NSPurgeableData. Après avoir enregistré l'image, vous pouvez marquer l'object comme étant purgeable, ce qui permettra de conserver la consommation de memory. Cela peut être un problème avec votre application, mais peut-être avec un autre que vous éviction.