2012-11-29 6 views
11

Próbuję napisać do następującej ścieżki:Czy musimy utworzyć podfoldery w Dokumentach przed wywołaniem pliku writeTo ze ścieżką zawierającą nowy folder?

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

Teraz nic nie zostanie wydrukowane i nie widzę pliku w moim symulatora. Czy to dlatego, że folder "newfolder" w folderze głównym Documents nie został jeszcze utworzony. Jeśli tak, czy istnieje sposób, aby go utworzyć, jeśli jeszcze go nie ma?

Dzięki!

Odpowiedz

22

Tak, należy się upewnić, że folder zostanie utworzony jako pierwszy. Użyj NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error: przechodząc w ścieżce do folderu, który chcesz utworzyć (a nie do pliku, który próbujesz napisać).

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

Należy sprawdzić wartość zwracaną tych metod i poradzić sobie z ewentualnymi błędami.

+0

Słodko! Dzięki, zrobię to! – abisson

+0

Plz pomaga tworzyć foldery dokumentów do dodawania obrazów w iOS. –

+0

Dzięki. Brakuje "]" po "[NSFileManager defaultManager". – Jos