【问题标题】:How to get the NSError message in iOS?如何在 iOS 中获取 NSError 消息?
【发布时间】:2011-03-27 16:30:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios objective-c nserror


    【解决方案1】:

    通常您需要使用[error localizedDescription] 来获取要向用户显示的文本。

    阅读 NSError 文档了解更多选项。

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

    【讨论】:

      【解决方案2】:

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

      NSString *msg = [error localizedDescription];
      

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

      NSLog(@"Error: %@", error);
      

      【讨论】:

        【解决方案3】:

        要添加到当前答案,您可以获得失败消息和失败原因。为此,您可以在出现 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]];
        

        【讨论】:

          【解决方案4】:

          用户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;
          }
          

          【讨论】:

            猜你喜欢
            • 2014-09-22
            • 1970-01-01
            • 1970-01-01
            • 2015-12-16
            • 1970-01-01
            • 1970-01-01
            • 2016-05-23
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多