【问题标题】:Cocoa - NSError description coming from nowhereCocoa - NSError 描述不知从何而来
【发布时间】:2011-08-02 23:01:39
【问题描述】:

我有这段代码:

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response 
{
    if ([response respondsToSelector:@selector(statusCode)]) {

        int statusCode = [((NSHTTPURLResponse*)response) statusCode];
        if (statusCode >= 400) {
            NSError* statusError = [NSError errorWithDomain:@"Server connection error" code:statusCode userInfo:nil];
            [self connection:connection didFailWithError:statusError];
        }
    }
}

- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error 
{
NSLog(@"%@", [error localizedDescription]);
}

这给出了一个缺少的页面:

--> 操作无法完成。 (服务器连接错误错误404。)

描述(本地化与否)从何而来?
我刚刚用一个代码和一个自定义的无意义的域字符串初始化了 NSError...

【问题讨论】:

    标签: iphone cocoa nserror


    【解决方案1】:

    该错误消息意味着服务器无法找到您的在线资源。

    例如:http://www.google.com/notthepageyourelookingfor

    HTTP 404 - 维基百科

    如果您询问错误消息的来源,它应该像这样分解:

    • localizedDescription:

      操作无法完成()

    默认情况下,此方法返回用户信息字典中键 NSLocalizedDescriptionKey 的对象。如果用户信息字典不包含 NSLocalizedDescriptionKey 的值,则从域和代码构造一个默认字符串。 NSLocalizedDescriptionKey 是错误的本地化字符串表示形式,如果存在,将由本地化描述返回。 适用于 Mac OS X v10.2 及更高版本。在 NSError.h 中声明。

    • errWithDomain:@"Server connection error":

      服务器连接错误

    • code:statusCode:

      错误 404

    【讨论】:

    • 服务器找不到。这不是应用程序的错。请注意。
    • @Oliver:我添加了一些关于本地化消息来源的更多信息。否则,我无法进一步分解它。您提供了大部分错误消息,并告诉错误填写其余部分。
    • @Patrick Perini :您的意思是 NSError 的构造函数知道当代码为 404 时要显示什么?域呢?我应该把什么放在那里才能以一种好的方式工作?
    【解决方案2】:

    操作无法完成。

    这是一个标准的 POSIX 错误。您的域和错误代码只是附加到实际的错误消息中以确定错误的来源。通常使用反向 DNS 样式的域,例如 com.developer.package

    【讨论】:

    • 太棒了。但问题是错误信息是从哪里来的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 2014-09-20
    相关资源
    最近更新 更多