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

Более подробная ошибка с createFileAtPath?

В любом случае, чтобы получить более подробные данные об ошибках с "createFileAtPath", я ожидал NSError? В настоящее время я использую возвращаемое значение BOOL.

success = [fileMan createFileAtPath:fileOnDisk contents:dBuffer attributes:nil];
if(success == YES) NSLog(@"FileCreated");
else {
    NSLog(@"ERROR: Failed to create file");
    return 1;
}

Гэри

4b9b3361

Ответ 1

Я согласен... Мне бы хотелось иметь функцию для этого, которая принимает NSError!

Ошибки, возвращаемые в этом случае, обычно являются одной из ошибок POSIX, объявленных в errno.h (errno автоматически включается для вас как часть заголовков Cocoa или Foundation).

Чтобы увидеть эту ошибку, используйте функцию strerror из errno.h и укажите глобальное целое число errno, которое задается низкоуровневыми функциями POSIX io при возникновении проблемы:

if (![fm createFileAtPath:@"/etc/foobar.txt" contents:data attributes:nil]) 
{
    NSLog(@"Error was code: %d - message: %s", errno, strerror(errno));
}

// output will be: Error was code: 13 - message: Permission denied

Список констант кода ошибки указан в Руководство по программированию обработки ошибок для Cocoa (в дополнение к errno.h заголовок).

Ответ 2

Вы не должны использовать этот метод; они забыли поместить это в главные документы (!), но если вы прочитаете заголовочный файл Apple, вы найдете этот комментарий:

/* Эти методы приведены здесь для обеспечения совместимости. Соответствующий методы NSData, которые возвращают NSErrors, следует рассматривать как основной способ создания файла из NSData или получения содержимое файла как NSData. */

Итак, Apple ожидает, что вы будете использовать это (что, из тестирования, похоже, будет работать точно так же, за исключением того, что оно расположено в странном классе, где вы никогда не подумали бы его искать (я хочу создать пустой файл... поэтому мне нужно... создать экземпляр объекта NSData nil? Что?) у него есть объект NSError):

https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSData_Class/Reference/Reference.html#//apple_ref/occ/instm/NSData/writeToFile:options:error: