2012-10-11 38 views
5

Escribí un programa simple para ayudarme a depurar.¿Dónde escribe [NSData writeToFile]?

#import "UIImage+saveScreenShotOnDisk.h" 

@implementation UIImage (saveScreenShotOnDisk) 

-(void)saveScreenshot{ 
    NSData * data = UIImagePNGRepresentation(self); 
    [data writeToFile:@"foo.png" atomically:YES]; 
} 

@end 

Después de que se ejecuta, quiero saber dónde se encuentra foo.png.

Fui a

~Library/Application Support 

y no puedo encontrar foo.png. ¿Dónde está?

Si hago

BOOL result = [data writeToFile:@"foo.png" atomically:YES]; 

el resultado será NO, que es un poco extraño teniendo en cuenta que el simulador, a diferencia del iPhone, se puede escribir en cualquier lugar.

+1

Es en el directorio de trabajo actual (CWD), que generalmente es el lugar desde donde se lanzó su programa. – sidyll

+0

No está allí, y si lo hago BOOL resultado = [datos writeToFile: @ "foo.png" atómicamente: SÍ]; el resultado es NO. –

+0

Ver aquí: [http://stackoverflow.com/questions/5794422/iphone-save-uiimage-to-desktop-on-simulator] [1] [1]: http: // stackoverflow. com/questions/5794422/iphone-save-uiimage-to-desktop-on-simulator – smoothdvd

Respuesta

19

necesitas dirigir el objeto NSData a la ruta que desea que los datos se guardan en:

NSString *docsDir; 
NSArray *dirPaths; 

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
docsDir = [dirPaths objectAtIndex:0]; 
NSString *databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:@"foo.png"]]; 
[data writeToFile:databasePath atomically:YES]; 

Esto ahorrará su archivo en la carpeta de la aplicación en el dispositivo (o el simulador).

+1

Esto es lo que finalmente hice. Pensé que si no especificamos la ruta, irá a alguna ruta "predeterminada". Estaba equivocado. –

+1

Genial, me alegro de que ayude. – Shachar

1

T se olvidó de proporcionar la ubicación o ruta en la que U quiere write.Check este WriteToFile: Opciones: Error:

escribe los bytes en el receptor en el archivo especificado por una ruta determinada.

- (BOOL)writeToFile:(NSString *)path options:(NSDataWritingOptions)mask error:(NSError **)errorPtr 

Parámetros

camino

The location to which to write the receiver's bytes. 

máscara

A mask that specifies options for writing the data. Constant components are described in “NSDataWritingOptions”. 

errorPtr

If there is an error writing out the data, upon return contains an NSError object that describes the problem. 
1

Usted puede dar a una búsqueda de "NSDocumentsDirectory", por lo general busco el camino para el directorio de documentos utilizando este método, y luego añado mi nombre de archivo a la misma. en el método writeToFile:, se proporciona esta ruta adjunta. Luego, usando iTunes> aplicación, desplácese hacia abajo, seleccione su aplicación y podrá ver el archivo guardado.

PD: debe haber establecido un valor en plist que especifique que su aplicación utiliza el almacenamiento del teléfono.

5

El lugar predeterminado, donde se almacenan los archivos, es la carpeta donde está almacenado el ejecutable.

ver dónde está su ejecutable se almacena a través de un clic derecho Productos-> YourExecutable:

Screenshot - show in finder executable

Entonces abierta en el buscador.

Aquí pawel.plist recurso de crear a través de

NSArray *a = @[@"mybike", @"klapki", @"clapki", @"ah"]; 
[a writeToFile:@"pawel.plist" atomically:NO]; 

pawel.plist resource I done from code

2

Para Swift, basado en la respuesta de Shachar:

let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] + "/foo.png" 
data?.writeToFile(path, atomically: true)