Подтвердить что ты не робот

Нужно ли создавать подпапки в Documents перед вызовом writeToFile с путём, который содержит новую папку?

Я пытаюсь записать следующий путь:

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

Теперь ничего не печатается, и я не вижу файл в своем симуляторе. Это связано с тем, что папка "новая папка" в основной папке "Документы" еще не создана. Если да, есть ли способ создать его, если он еще не существует?

Спасибо!

4b9b3361

Ответ 1

Да, сначала убедитесь, что папка создана. Используйте NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error:, проходящий путь к папке, которую вы хотите создать (не файл, который вы пытаетесь записать).

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

Вы должны проверить возвращаемое значение этих методов и обработать любые сбои.