2008-12-01 123 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 :)。