Cocoa - NSError 描述不知从何而来

Posted

技术标签:

【中文标题】Cocoa - NSError 描述不知从何而来【英文标题】:Cocoa - NSError description coming from nowhere 【发布时间】: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...

【问题讨论】:

【参考方案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

【讨论】:

太棒了。但问题是错误信息是从哪里来的。

以上是关于Cocoa - NSError 描述不知从何而来的主要内容,如果未能解决你的问题,请参考以下文章

WAMP phpmyadmin 403 错误,不知从何而来?

Linux系统启动过程的打印信息从何而来?

神经网络从何而来?

UnobservedTaskException - 任务从何而来

0x 从何而来? [复制]

SKProduct Swift - 信息从何而来?