2008-12-01 125 views
3

我现在在具有奇数边缘情况下,从一个NSURLConnection的委托方法的响应代码:NSURLConnection的和处理响应代码和响应数据

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data; 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response; 

是对后续的委托方法之前触发

我的代码当然可以使用改进,因为它现在会检查上面的HTTP响应代码,然后调用某些方法来执行操作。不幸的是,在那个时候,数据还没有可用。

什么是在我的课方法不触发方式耦合responseresponseData一些优雅的解决方案,直到responseresponseData是200 +不nil。我是否需要将它们都设置为类实例变量?看起来像一个穷人的解决方案。

回答

8

数据之前的响应是正确的顺序。实际上,您应该清除此方法中的任何数据(以防您通过重定向接收到多个响应,并且任何干预数据过时)。

您会收到一个连接:didReceiveResponse:消息,告诉您已收到回复标题,但发生之前任何正文内容。

如果您需要访问回复的所有元素,您应该简单地存储响应和数据,并仅在connectionDidFinishLoading中处理它们(或者如果数据很长,则可以通过连接进行递增处理: didReceiveData :)。