2012-10-11 8 views
5

Ho scritto un semplice programma per aiutarmi a eseguire il debug.Dove scrive [NSData writeToFile]?

#import "UIImage+saveScreenShotOnDisk.h" 

@implementation UIImage (saveScreenShotOnDisk) 

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

@end 

Dopo che è eseguito, voglio sapere dove si trova foo.png.

sono andato a

~Library/Application Support 

e non riesco a trovare foo.png. Dov'è?

Se faccio

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

il risultato sarà NO, che è un po 'strano dato che il simulatore, a differenza del iPhone, può scrivere ovunque.

+1

E 'nella directory di lavoro corrente (CWD), che è generalmente il luogo da dove è stato lanciato il tuo programma. – sidyll

+0

Non c'è, e se faccio BOOL result = [data writeToFile: @ "foo.png" atomicamente: YES]; il risultato è NO. –

+0

vedere qui: [http://stackoverflow.com/questions/5794422/iphone-save-uiimage-to-desktop-on-simulator] [1] [1]: http: // StackOverflow. it/questions/5794422/iphone-save-uiimage-to-desktop-on-simulator – smoothdvd

risposta

19

È necessario indirizzare l'oggetto NSData al percorso che si desidera i dati da salvare in:

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]; 

Consente di salvare il file nella cartella di vostra app sul dispositivo (o il simulatore).

+1

Questo è quello che alla fine ho fatto. Ho pensato che se non specifichiamo il percorso andremo ad un percorso "predefinito". Mi sbagliavo. –

+1

Grande, felice che aiuti. – Shachar

1

U dimenticato di fornire posizione o il percorso in cui u desidera write.Check questo writeToFile: opzioni: errore:

Scrive i byte nel ricevitore per il file specificato da un determinato percorso.

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

Parametri

percorso

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

maschera

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

Si può dare una ricerca per "NSDocumentsDirectory", io di solito cerco il percorso della directory dei documenti utilizzando questo metodo, e quindi aggiungere il mio nome del file ad esso. nel metodo writeToFile:, viene fornito questo percorso aggiunto. Quindi, utilizzando iTunes> applicazione, scorri verso il basso, seleziona la tua app e dovresti essere in grado di vedere il file salvato.

PS: è necessario impostare un valore in plist che specifica che l'applicazione utilizza la memoria del telefono.

5

Il luogo predefinito in cui sono memorizzati i file è la cartella in cui è memorizzato il file eseguibile.

vedere dove il vostro eseguibile è memorizzata attraverso il tasto destro cliccando Prodotti-> YourExecutable:

Screenshot - show in finder executable

Poi aperti nel Finder.

Qui pawel.plist risorsa creare tramite

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

pawel.plist resource I done from code

2

per SWIFT, in base alla risposta del Shachar:

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