не удается, но объект ошибки не возвращается. Зачем? - PullRequest
5 голосов
/ 12 августа 2009

Я пытаюсь понять значение значения, возвращаемого [NSData writeToFile: параметры: ошибка:] . Метод возвращает BOOL, который согласно документации Apple - «ДА, если операция прошла успешно, в противном случае НЕТ.»

Достаточно справедливо, но если это НЕТ, я бы предположил, что для параметра ошибки будет установлено некоторое извлекаемое значение NSError *. Однако в результатах я сталкиваюсь, это не тот случай. Соответственно, я несколько растерялся и не знаю, как определить причину сбоя.

Кстати, у меня есть этот код (более или менее):

NSError* error = nil;
BOOL success = [data writeToFile: filePath error: &error];
if ( error )
    NSLog( @"error = %@", [error description] );

success оказывается в коде, который я запускаю, NO, но оператор NSLog никогда не выполняется. Как получилось?

Говард

Ответы [ 2 ]

14 голосов
/ 12 августа 2009

Возможно, что data равно nil, в этом случае [data writeToFile:error:] возвращает nil, но *error не установлено.

0 голосов
/ 12 августа 2009

Метод writeToFile возвращает TRUE в случае успеха и FALSE в случае неудачи - это то, что вы действительно хотите проверить.

Итак, попробуйте:

if(!success)

Как ваше условное вместо if (ошибка).

...