2013-05-04 3 views
6

Я хочу создать каталог внутри моего приложенияSupportDirectory. Я понимаю, что applicationSupportDirectory не позволяет пользователям видеть данные внутри. Вот почему я его выбрал. Тем не менее, код, который я использую ниже, кажется, терпит неудачу, и я не уверен, почему.Создать каталог программно

Может ли кто-нибудь сказать мне, что я сделал не так? Благодаря!

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); 
NSString *applicationDirectory = [paths objectAtIndex:0]; // Get directory 
NSString *dataPath = [applicationDirectory stringByAppendingPathComponent:@"drawings"]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){ 

NSError* error; 
if([[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]) 
    ;// success 
else 
{ 
    NSLog(@"Failed"); 
} 
} 
} 
+0

пожалуйста изменить withIntermediateDirectories: это "ДА" – dhaya

ответ

5
NSString *directoryName = @"drawing"; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); 

NSString *applicationDirectory = [paths objectAtIndex:0]; 
NSString *filePathAndDirectory = [applicationDirectory stringByAppendingPathComponent:directoryName]; 
NSError *error; 

if (![[NSFileManager defaultManager] createDirectoryAtPath:filePathAndDirectory 
           withIntermediateDirectories:YES 
               attributes:nil 
                error:&error]) 
{ 
    NSLog(@"Create directory error: %@", error); 
} 

Надеется, что это поможет вам

6

Попробуйте это, это работает для меня.

NSString* documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                   NSUserDomainMask, 
                   YES)[0]; 
NSString *folder = [documentsPath stringByAppendingPathComponent:@"foldername"]; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error = nil; 
if (![fileManager fileExistsAtPath:folder]){ 
    [fileManager createDirectoryAtPath:folder 
      withIntermediateDirectories:YES 
          attributes:nil 
           error:&error]; 
} 
+0

этот ответ на самом деле лучше. Он создает каталог только в том случае, если он не существует. Пальцы вверх! – Farini

-1

Для создания Dirtectory

NSError *error; 
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/directoryname"]; 
NSLog(@"%@",path); 
if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { 
    [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error]; 
    // Set do not backup attribute to whole folder 

} 
Смежные вопросы