Как я могу просмотреть NSError?

Какой лучший способ войти NSError?

- (void)checkThing:(Thing *)thing withError:(NSError *)error {
    NSLog(@"Error: %@", error);
}

Дает мне nullсообщение

13.10.2009 09:38:35
3 ОТВЕТА
РЕШЕНИЕ

Просмотр документации NSError говорит мне, что вам нужно сделать что-то вроде:

NSLog(@"%@",[error localizedDescription]);

Это должно дать вам читабельный вывод

114
13.10.2009 11:29:17
Ну, сначала ему нужна ошибка, чтобы получить описание. И ошибка description(в настоящее время) будет, по крайней мере, содержать домен и код ошибки, что может быть более полезным в сообщении журнала консоли.
Peter Hosey 13.10.2009 13:10:01
Спасибо, я видел эту функцию, но я не понял, почему журнал давал мне (ноль).
nevan king 13.10.2009 14:30:36
NSLog(@"Error: %@", error);

Дает мне нулевое сообщение

Тогда errorэто nilне экземпляр NSError.

19
13.10.2009 10:55:02
Спасибо, это очень помогает. Я думал, что я делаю что-то не так. Каков лучший способ зарегистрировать ошибку тогда?
nevan king 13.10.2009 14:29:57
Разве ему не нужно разыменовывать NSError**?
fbrereto 13.10.2009 17:09:42
В первоначальном вопросе не было двух звездочек. Абизерн добавил вторую звездочку; Я откатил его правку, потому что не думаю, что это имеет смысл для настоящего вопроса. Если бы это был аргумент с двойной звездочкой, он обычно (особенно для NSError) был бы выходным аргументом, поэтому метод не должен пытаться получить объект через этот указатель.
Peter Hosey 13.10.2009 20:02:46
Неван: NSLog, именно так, как вы это делаете. Вы должны иметь ошибку, чтобы войти, прежде чем вы сможете зарегистрировать ошибку; Ваша проблема (поскольку это проблема) заключается в том, что у вас нет ошибки.
Peter Hosey 13.10.2009 20:07:39

Вот грубый метод, который я использую для регистрации ошибок при разработке; (Не для Какао-Touch)

// Execute the fetch request put the results into array
NSError *error = nil;
NSArray *resultArray = [moc executeFetchRequest:request error:&error];
if (resultArray == nil)
{
    // Diagnostic error handling
    NSAlert *anAlert = [NSAlert alertWithError:error];
    [anAlert runModal];
}

NSAlert заботится об отображении ошибки.

2
13.10.2009 20:10:02
Конечно, это полезно только на Mac. UIKit не имеет NSAlert.
Peter Hosey 13.10.2009 20:02:11
Да! Я не читал теги. Спасибо за откат на редактирование. Я все еще думаю, что этот ответ полезно оставить для других, если они принимают к сведению, что это только для рабочего стола.
Abizern 13.10.2009 20:09:24