我看到了一些像这样的代码:
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
if(connection) {
receivedData = [NSMutableData data];
} else {
}
如何让它进入其他?我试过禁用连接但仍然没有进入其通过didFailWithError的其他...所以想知道它是否甚至是必要的??
答案 0 :(得分:1)
关于此方法返回值的Apple文档说:
返回值
网址请求的网址连接。如果a,则返回nil 连接无法初始化。
对于那些不熟悉Cocoa(和Objective-C)最佳实践的人来说,这可能会产生误导。
通常init
方法应该返回一个对象;除非有一些根本原因返回一个物体将是危险的。大多数其他语言通过抛出异常处理这样的情况,要求你添加无数的try / catch括号。
如果(例如)您传递initWithRequest:delegate:
作为请求参数,则nil
方法将返回nil
;并且有充分的理由。为什么创建连接对象没有用处?
然而,让我们考虑一下飞机模式或无效网址等情况。如果initWithRequest:delegate:
刚刚返回nil
那么你怎么知道出了什么问题?允许连接调用connection:didFailWithError:
使您有机会通过错误参数深入了解特定的失败。
解决关于是否有必要处理连接事件nil
的问题:这取决于。如果连接无法初始化,它将永远不会调用连接委托方法,因此如果您的代码依赖于这些回调来发出后续请求,那么是的,这是必要的。
附注:在此处创建NSMutableData
还为时过早,因为您还不知道存在有效连接。 An answer I gave here gave some very basic sample code regarding where to do this.
答案 1 :(得分:0)
您可以在代码的其他部分显示“未找到数据”的提醒 UIAlertView * thealert = [[UIAlertView alloc] initWithTitle:@“Error”消息:@“未找到数据。” delegate:self cancelButtonTitle:@“Ok”otherButtonTitles:nil]; [thealert show]; [thealert release];