34

我的视图控制器中有该方法,如下所示:

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

在这里,我需要在警报中的 NSError 中显示实际错误消息,任何人都可以建议如何获取它。

4

4 回答 4

46

通常你会想用它[error localizedDescription]来让文本显示给用户。

阅读 NSError 文档以获取更多选项。

对于开发时的简单日志记录,您可以执行NSLog(@"Error: %@", error). (这将为您提供“localizedDescription”以及您登录 Xcode 的所有其他内容。)

于 2010-08-10T07:25:48.990 回答
37

要仅获取错误消息,请使用:

NSString *msg = [error localizedDescription];

但是要记录更多详细信息,请使用%@格式,例如:

NSLog(@"Error: %@", error);
于 2015-04-15T14:01:18.027 回答
5

要添加到当前答案,您可以获得失败消息和失败原因。为此,您可以在出现 NSError 时执行此操作:

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

这将创建一个 3 行字符串,其中包含发生错误的方法名称、错误描述和解释错误的句子。

如果在 NSError 中提供了更多信息,您也可以获取本地化恢复建议并将其添加到消息中,如下所示:

NSString *message = [NSString stringWithFormat:@"%s\n%@\n%@\n%@", __PRETTY_FUNCTION__, displayRegion, [error localizedDescription], [error localizedFailureReason], [error localizedRecoverySuggestion]];
于 2015-04-24T16:13:20.057 回答
1

用户 error.userInfo,它返回字典 ex:

 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;
}
于 2015-04-15T09:30:52.037 回答