Метод NSFileManager createDirectoryAtPath возвращает true, но каталог не был создан

#ios #objective-c #nsfilemanager

Вопрос:

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

 -(BOOL)createFolderInDocuments:(NSString *)folderName
{
    NSError *error = nil;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:folderName];
    
    BOOL success = YES;
    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
        success = [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:amp;error];
    
    if(error){
        UIAlertController * alert = [UIAlertController
                                     alertControllerWithTitle:@"Error"
                                     message:[NSString stringWithFormat:@"Create folder: %@", error]
                                     preferredStyle:UIAlertControllerStyleAlert];
        
        UIAlertAction* okButton = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action){}];
        [alert addAction:okButton];
        [self presentViewController:alert animated:YES completion:nil];
    }
    
    if (success) {
        NSLog(@"Created folder with name %@", folderName);
    }
    return success;
}
 

После того, как я запустил метод, я получил это сообщение в консоли

 2021-11-01 15:16:23.786293 0800 my-app[887:167944] Created folder with name 2021-11-01T15-16-23
 

что означает, что метод createDirectoryAtPath возвращен true .

Из моего опыта использования этого репозитория https://github.com/Varvrar/ios_logger после того, как я запустил метод, я должен получить папку с именем моего приложения в папке Finder, как показано ниже. введите описание изображения здесь

Но я здесь ничего не получил. На самом деле, я не смог найти каталог нигде на моем iPhone. Так что, я думаю, он вообще не был создан.

Кто-нибудь может сказать мне, как правильно создать каталог? Спасибо!

Комментарии:

1. «Но у меня здесь ничего нет», где именно «здесь»? Вам разрешено создавать папку только внутри папки изолированной среды, назначенной вашему приложению.

2. Извините, я не знаю точного местоположения на iPhone. Я могу найти его, следуя разделу «Просмотр приложений iOS и iPadOS, которые могут обмениваться файлами с вашим Mac» в этом руководстве support.apple.com/en-us/HT210598

3. Используется NSLog для печати пользователя dataPath.

4. @El Tomato Я сделал это, результат «/var/mobile/Containers/Data/Application/73E4106A-B108-4CEA-B7E3-F829CF861577/Documents/2021-11-01T16-23-56»

Ответ №1:

Хорошо, я понял это. Каталог действительно был создан, он просто не отображался в Finder, когда iPhone подключался к Mac.

Чтобы он отображался в Finder, добавьте это право в info.plist проекта xcode project введите описание изображения здесь