2012-11-29 13 views
11

Sto cercando di scrivere al seguente percorso:È necessario creare sottocartelle in Documenti prima di chiamare writeToFile con un percorso che contiene una nuova cartella?

 NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
     NSString *storePath = [docDir stringByAppendingPathComponent:@"/newfolder/test.jpg"]; 

     NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)]; 
     BOOL saved = [data writeToFile:storePath atomically:NO]; 
     NSLog(@"%c", saved); 

Ora, nulla viene stampato e non riesco a vedere il file nel mio simulatore. È perché la cartella "newfolder" nella cartella principale di Documenti non è ancora stata creata. Se è così, c'è un modo per crearlo se non c'è ancora?

Grazie!

risposta

22

Sì, è necessario assicurarsi che la cartella sia stata creata per prima. Utilizzare NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error: passando il percorso della cartella che si desidera creare (non il file che si sta tentando di scrivere).

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *storePath = [docDir stringByAppendingPathComponent:@"newfolder/test.jpg"]; 

[[NSFileManager defaultManager] createDirectoryAtPath:[storePath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil]; 

NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)]; 

È necessario verificare il valore restituito di questi metodi e gestire eventuali errori.

+0

Dolce! Grazie lo farò! – abisson

+0

Plz aiuta a creare una cartella documenti per aggiungere immagini in iOS. –

+0

Grazie. Manca "]" dopo "[NSFileManager defaultManager". – Jos

Problemi correlati