2012-11-29 8 views
11

Ich versuche, auf den folgenden Pfad zu schreiben:Müssen Unterordner in Documents erstellt werden, bevor ein writeToFile mit einem Pfad aufgerufen wird, der einen neuen Ordner enthält?

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

Nun wird nichts gedruckt und ich kann die Datei in meinem Simulator nicht sehen. Dies liegt daran, dass der Ordner "newfolder" im Hauptordner "Documents" noch nicht erstellt wurde. Wenn ja, gibt es eine Möglichkeit, es zu erstellen, wenn es noch nicht da ist?

Danke!

Antwort

22

Ja, Sie müssen sicherstellen, dass der Ordner zuerst erstellt wird. Verwenden Sie NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error: und übergeben Sie den Pfad zu dem Ordner, den Sie erstellen möchten (nicht die Datei, die Sie schreiben möchten).

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

Sie sollten den Rückgabewert dieser Methoden überprüfen und alle Fehler behandeln.

+0

Süß! Danke, ich werde das tun! – abisson

+0

Plz Hilfe zum Erstellen von Dokumenten-Ordner zum Hinzufügen von Bildern in iOS. –

+0

Danke. Nach '[NSFileManager defaultManager'] fehlt ein ']'. – Jos