0

我想记录使用 WebView 时产生的一些错误。例如:

- (void)webView:(UIWebView *)aWebView didFailLoadWithError:(NSError *)error{
    NSString * domain;
    domain  = [error domain];
    NSLog(@"%@",error);
    if ( domain == NSURLErrorDomain ) {NSLog(@"log me");}
}

我发现这不适用于 Xcode 6.1 和 iOS8.1-simulator。它曾经在以前的 iOS 版本上工作(使用 Xcode 6.1 和 iOS7-simulator 测试)。 我错过了什么?

这是控制台输出:

2014-11-06 03:42:15.295 MyApp 调试 [21897:3606481] 错误域 = NSURLErrorDomain 代码 = -1012 “操作无法完成。(NSURLErrorDomain 错误 -1012。)” UserInfo = 0x7a7531c0 {NSErrorFailingURLKey = https: //www.google.fr/ }

以及使用 iOS8 模拟器时的一些调试:

(lldb) p NSURLErrorDomain (void *)
$0 = 0x0064dacc
(lldb) po 域
NSURLErrorDomain

(lldb) p 域 (NSString *) $2 = 0x0064dacc @"NSURLErrorDomain"

4

2 回答 2

3

只是为了扩展 Aaron 的回答:你所做的总是错误的,但它可能因为 Cocoa 存储字符串的方式发生了意外而起作用。domain == NSURLErrorDomain测试它们是否实际上是同一个对象。好吧,也许在某些情况下它们是;Cocoa 有时可以通过将两个不同的实例(例如,字面量@"howdy")视为对同一个对象的引用来有效地运行。但显然,指望这种行为是没有意义的。这只是一个实现细节。

于 2014-11-06T03:10:39.383 回答
1

由于您正在比较字符串,因此您将希望isEqualToString:像这样使用:

if ( [domain isEqualToString:NSURLErrorDomain] ) {NSLog(@"log me");}
于 2014-11-06T03:07:20.457 回答