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 错误,不知从何而来?