Как получить сообщение NSError в iOS? - PullRequest
26 голосов
/ 10 августа 2010

У меня есть метод в моем контроллере представления, как показано ниже:

- (void)parser:(PaymentTermsLibxmlParser *)parser encounteredError:(NSError *)error
{
    NSLog("error occured");
}

Здесь мне нужно показать фактическое сообщение об ошибке в ошибке NSE в моем предупреждении, может ли кто-нибудь подсказать, как его получить.

Ответы [ 4 ]

45 голосов
/ 10 августа 2010

Обычно вы хотите использовать [error localizedDescription], чтобы текст отображался пользователю.

Прочтите документацию NSError для получения дополнительных опций.

Для простого ведения журнала при разработке выможно сделать NSLog(@"Error: %@", error).(Это даст вам «localizedDescription» и все остальное в вашем журнале в Xcode.)

26 голосов
/ 15 апреля 2015

использовать [error localizedDescription], которое отображает сообщение об ошибке

4 голосов
/ 24 апреля 2015

Чтобы добавить к текущим ответам, вы можете получить сообщение об ошибке и причину ошибки. Чтобы сделать это, вы можете сделать это при наличии ошибки NSE:

NSString *message = [NSString stringWithFormat:@"%s\n%@\n%@", __PRETTY_FUNCTION__, displayRegion, [error localizedDescription], [error localizedFailureReason]];

Это создаст трехстрочную строку с названием метода, в котором произошла ошибка, описанием ошибки и предложением, объясняющим ошибку.

Если в NSError будет предоставлена ​​дополнительная информация, вы также можете получить localizedRecoverySuggestion и добавить его к сообщению следующим образом:

NSString *message = [NSString stringWithFormat:@"%s\n%@\n%@\n%@", __PRETTY_FUNCTION__, displayRegion, [error localizedDescription], [error localizedFailureReason], [error localizedRecoverySuggestion]];
1 голос
/ 15 апреля 2015

Пользователь error.userInfo, возвращает словарь, например:

 NSLog(@"%@",error.userInfo);
{
code = 101;
error = "invalid login parameters";
originalError = "Error Domain=NSURLErrorDomain Code=-1011 \"The operation        couldn\U2019t be completed. (NSURLErrorDomain error -1011.)\"";
temporary = 0;
}
...