2012-11-29 17 views
11

aşağıdaki yolu yazmak için çalışıyorum:Yeni klasör içeren bir yolla writeToFile çağırmadan önce Belgeler'de alt klasörler oluşturmamız gerekiyor mu?

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

Şimdi, hiçbir şey baskılı alır ve benim simülatörü dosyayı göremez. Bunun nedeni, Belgeler ana klasörü içindeki "yeni klasör" klasörünün henüz oluşturulmamasıdır. Eğer öyleyse, henüz orada değilse, yaratmanın bir yolu var mı?

Teşekkürler!

cevap

22

Evet, öncelikle klasörün oluşturulduğundan emin olmalısınız. Oluşturmak istediğiniz klasörün yolunu geçirerek (yazmaya çalıştığınız dosyaya değil) NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error: kullanın.

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

Bu yöntemlerin dönüş değerlerini denetlemeniz ve hatalarla başa çıkmanız gerekir.

+0

Sweet! Teşekkürler bunu yapacağım! – abisson

+0

iOS'ta görüntüleri eklemek için belge klasörü oluşturma konusunda yardım. –

+0

Teşekkürler. '[NSFileManager defaultManager'] 'den sonra' eksik 'var. – Jos