Este es el método preferido que utiliza la dirección URL de obtener un enlace directamente al directorio tmp y luego devuelve una dirección de fichero (pkm.jpg) para ese directorio:
Swift 4.0
let tmpURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
.appendingPathComponent("pkm")
.appendingPathExtension("jpg")
print("Filepath: \(tmpURL)")
// Then write to disk
if let url = tmpURL, let data = UIImageJPEGRepresentation(image, 0.8) {
// Use do-catch for error handling, disk can be full etc.
try? data.write(to: url)
}
Swift 3,1
let tmpURL = try! URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
.appendingPathComponent("pkm")
.appendingPathExtension("jpg")
print("Filepath: \(tmpURL)")
¡Tenga en cuenta que no se maneja un posible error!
Swift 2,0
let tmpDirURL = NSURL.fileURLWithPath(NSTemporaryDirectory(), isDirectory: true)
let fileURL = tmpDirURL.URLByAppendingPathComponent("pkm").URLByAppendingPathExtension("jpg")
print("FilePath: \(fileURL.path)")
Objective-C
NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES];
NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:@"pkm"] URLByAppendingPathExtension:@"jpg"];
NSLog(@"fileURL: %@", [fileURL path]);
Tenga en cuenta que algunos métodos todavía solicitar una ruta como una cadena, a continuación, utilizar el [fileURL path]
a devolver la ruta como una cadena (como se mostrado arriba en NSLog). Al actualizar la aplicación de una corriente de todos los archivos en las carpetas:
<Application_Home>/Documents/
<Application_Home>/Library/
están garantizados para ser preservado de la versión anterior (excluyendo la <Application_Home>/Library/Caches
subdirectorio). Utilice la carpeta Documents
para los archivos a los que desee que tenga acceso el usuario y la carpeta Library
para los archivos que utiliza la aplicación y el Usuario no debe ver.
Otra ya manera podría ser la de obtener una URL para el directorio tmp, por primera vez obtener el directorio de documentos y pelar el último componente de la ruta y luego añadir la carpeta tmp:
NSURL *documentDir = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject];
NSURL *tmpDir = [[documentDir URLByDeletingLastPathComponent] URLByAppendingPathComponent:@"tmp" isDirectory:YES];
NSLog(@"tmpDir: %@", [tmpDir path]);
Entonces podemos abordar un archivo existe, es decir pkm.jpg como se muestra aquí:
NSString *fileName = @"pkm";
NSURL *fileURL = [tmpDir URLByAppendingPathComponent:fileName isDirectory:NO];
fileURL = [fileURL URLByAppendingPathExtension:@"jpg"];
Lo mismo se puede lograr con cadenas, que se usaba en los sistemas iOS anteriores, pero el primer método URL anterior es el recomendado ahora (a menos que esté escribiendo en sistemas anteriores: iPhone OS 2 o 3):
NSString *tmpDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
tmpDir = [[tmpDir stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"tmp"];
NSString *filePath = [[tmpDir stringByAppendingPathComponent:@"pkm"] stringByAppendingPathExtension:@"jpg"];
Este post explicar todos los directorios de aplicación de iOS, guardar, eliminar http://kmithi.blogspot.in/2012/08/ios-application-directory-structure.html – mithilesh
'UIImageJPEGRepresentation()' 'ya vuelve NSData * '- ¿Por qué lo pasaste a' dataWithData: 'antes de usarlo? Me pregunto si sabes algo que yo no ... – ArtOfWarfare