Создайте папку внутри папки документов в приложениях iOS

Я просто хочу создать новые папки в папке документов моего iPhone-приложения.

Кто-нибудь знает, как это сделать?

Ценю вашу помощь!

Я делаю это следующим образом:

NSError *error; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/MyFolder"]; if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder 

У меня недостаточно репутации, чтобы прокомментировать ответ Манни, но [paths objectAtIndex: 0] – стандартный способ получения каталога документов приложения

http://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StandardBehaviors/StandardBehaviors.html#//apple_ref/doc/uid/TP40007072-CH4-SW6

Поскольку функция NSSearchPathForDirectoriesInDomains была разработана первоначально для Mac OS X, где может быть более одного из каждого из этих каталогов, она возвращает массив путей, а не один путь. В iOS результирующий массив должен содержать единственный путь к каталогу. В листинге 3-1 показано типичное использование этой функции.

Листинг 3-1. Получение пути к каталогу документов приложения.

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; 

Swift 3 Решение:

 private func createImagesFolder() { // path to documents directory let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first if let documentDirectoryPath = documentDirectoryPath { // create the custom folder path let imagesDirectoryPath = documentDirectoryPath.appending("/images") let fileManager = FileManager.default if !fileManager.fileExists(atPath: imagesDirectoryPath) { do { try fileManager.createDirectory(atPath: imagesDirectoryPath, withIntermediateDirectories: false, attributes: nil) } catch { print("Error creating images folder in documents dir: \(error)") } } } } 

Мне не нравится «[paths objectAtIndex: 0]», потому что если Apple добавит новую папку, начинающуюся с «A», «B» или «C», папка «Документы» не является первой папкой в ​​каталоге.

Лучше:

 NSString *dataPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MyFolder"]; if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder 

Решение Swift 2 :

 let documentDirectoryPath: String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first! if !NSFileManager.defaultManager().fileExistsAtPath(documentDirectoryPath) { do { try NSFileManager.defaultManager().createDirectoryAtPath(documentDirectoryPath, withIntermediateDirectories: false, attributes: nil) } catch let createDirectoryError as NSError { print("Error with creating directory at path: \(createDirectoryError.localizedDescription)") } } 

Это отлично работает для меня,

 NSFileManager *fm = [NSFileManager defaultManager]; NSArray *appSupportDir = [fm URLsForDirectory:NSDocumentsDirectory inDomains:NSUserDomainMask]; NSURL* dirPath = [[appSupportDir objectAtIndex:0] URLByAppendingPathComponent:@"YourFolderName"]; NSError* theError = nil; //error setting if (![fm createDirectoryAtURL:dirPath withIntermediateDirectories:YES attributes:nil error:&theError]) { NSLog(@"not created"); } 

Следующий код может помочь в создании каталога:

 -(void) createDirectory : (NSString *) dirName { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; // Fetch path for document directory dataPath = (NSMutableString *)[documentsDirectory stringByAppendingPathComponent:dirName]; NSError *error; if (![[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]) { NSLog(@"Couldn't create directory error: %@", error); } else { NSLog(@"directory created!"); } NSLog(@"dataPath : %@ ",dataPath); // Path of folder created } 

Применение :

 [self createDirectory:@"MyFolder"]; 

Результат:

каталог создан!

dataPath: / var / mobile / Приложения / BD4B5566-1F11-4723-B54C-F1D0B23CBC / Documents / MyFolder

Swift 1.2 и iOS 8

Создайте собственный каталог (name = “MyCustomData”) внутри каталога документов, но только если каталог не существует.

 // path to documents directory let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as! String // create the custom folder path let myCustomDataDirectoryPath = documentDirectoryPath.stringByAppendingPathComponent("/MyCustomData") // check if directory does not exist if NSFileManager.defaultManager().fileExistsAtPath(myCustomDataDirectoryPath) == false { // create the directory var createDirectoryError: NSError? = nil NSFileManager.defaultManager().createDirectoryAtPath(myCustomDataDirectoryPath, withIntermediateDirectories: false, attributes: nil, error: &createDirectoryError) // handle the error, you may call an exception if createDirectoryError != nil { println("Handle directory creation error...") } } 

Swift 4.0

 var paths: [Any] = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documentsDirectory: String = paths[0] as? String ?? "" // Get documents folder let dataPath: String = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("/MyFolder").absoluteString if !FileManager.default.fileExists(atPath: dataPath) { try? FileManager.default.createDirectory(atPath: dataPath, withIntermediateDirectories: false, attributes: nil) } 
Давайте будем гением компьютера.