El file guardado desaparece después de volver a comstackr la aplicación.

Estoy escribiendo una aplicación de iOS (en Swift ) que incluye y opciones para save imágenes en una location segura. Una vez que se elige una image (desde la camera o las imágenes guardadas), se escribe en el file y la location del file se guarda en NSUserDefaults . Soy capaz de volver a acceder a la image, cuando vuelvo a lanzar la aplicación después de matarla. Pero cuando vuelvo a ejecutar la aplicación desde Xcode (después de volver a comstackr), la image se pierde de la ruta de la Imagen.

Adjuntando las funciones de save y cargar a continuación

  func getDocumentsURL() -> NSURL { let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] return documentsURL } func fileInDocumentsDirectory(filename: String) -> String { let fileURL = getDocumentsURL().URLByAppendingPathComponent(filename) return fileURL.path! } func saveImage (image: UIImage, path: String ) -> Bool{ // let pngImageData = UIImagePNGRepresentation(image) let jpgImageData = UIImageJPEGRepresentation(image, 1.0) // if you want to save as JPEG let result = jpgImageData!.writeToFile(path, atomically: true) return result } func loadImageFromPath(path: String) -> UIImage? { let image = UIImage(contentsOfFile: path) if image == nil { print("missing image at: \(path)") } print("Loading image from path: \(path)") // this is just for you to see the path in case you want to go to the directory, using Finder. return image } 

¿Qué podría estar causando esto?

La ruta del Directorio de documentos es diferente después de cada ejecución.

Guarde en NSUserDefaults solo la ruta relativa del directory de documentos (lo que getDocumentsURL() a getDocumentsURL() NSURL ).

Entonces, en su caso, no especifica un subdirectory en su directory de documentos de aplicaciones, por lo que lo único que necesita en la próxima ejecución es el nombre de file que guardó.

Después de eso, puede recuperar la image guardada con:

  func loadImageNamed(name: String) -> UIImage? { let imagePath = fileInDocumentsDirectory(name) let image = UIImage(contentsOfFile: imagePath) if image == nil { print("missing image at: \(path)") } print("Loading image from path: \(path)") // this is just for you to see the path in case you want to go to the directory, using Finder. return image } 

Al volver a instalar la aplicación, el directory de documentos cambiará. No debe save la ruta completa, sino una ruta relativa desde el directory de documentos.