2011-10-18 126 views
1

我設計了一個應用程序,它將從服務器下載一些數據,並且如果沒有網絡問題,所有工作都正常。但是,如果在下載過程中有一些網絡波動,一些數據將不會被下載,應用程序將崩潰。 在這裏,我需要你們的幫助。我能否編寫單獨的代碼來處理這種情況,並通過刪除未完成的下載數據來重新下載整個數據。 預先感謝您,處理中斷下載

+0

嘗試張貼的一些代碼裏面所有的東西你正在做什麼。 –

回答

0

當有任何網絡波動或類似問題時,如果您使用NSURLConnection或任何其他網絡API,您應該得到一個HTTP錯誤代碼。你可以用它來刪除不完整的下載數據並通知控制器代碼,以便決定是否重新下載等。

+0

非常感謝Aditya Kumar Pandey的回覆。但我正在我的應用程序的不同類中下載不同的文件。我只想知道我是否可以在單獨的類中編寫此代碼,並處理此類中的所有下載。如果是這樣,那麼單個函數是否足夠,以及它的參數和返回類型是什麼。 –

0

Aditya是對的。假設如果你的連接斷開,你可以用下面的委託方法讀取響應代碼,您正在使用NSURLConnection的,

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response { 
    NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response; 
    int responseStatusCode = [httpResponse statusCode]; 
} 

,你可以停止移動的連接,並刪除您未完成的下載數據進行。


更新回答該評論。

如果你在不同的類中使用不同的連接,你應該在每個類中實現它。在我看來,你應該有一個設計,就像一個特定的班級將處理所有連接相關的任務。 (可能會不符合你的要求)。但是對於你目前的設計,你應該在你所有的課程中使用它。

+0

非常感謝你ElanthiraiyanS爲您的快速回復。但我正在我的應用程序的不同類中下載不同的文件。我只想知道我是否可以在單獨的類中編寫此代碼,並處理此類中的所有下載。如果是這樣,那麼單個函數是否足夠,以及它的參數和返回類型是什麼。 –

+0

更新了我的答案。 – sElanthiraiyan

1

是的。你可以做到這一點。
有兩種情況
1.網絡不可用。
- - >要解決這個問題,你必須使用「Rechability」示例代碼(Apple提供)。開始下載之前,你必須檢查互聯網的可用性。
- 或者如果你沒有檢查互聯網的可重用性,那麼你將在NSURL連接的委託方法中得到錯誤代碼(404):
- (void)連接:(NSURLConnection *)連接didReceiveResponse:(NSURLResponse *)響應
2.網絡波動。
這裏我的意思是在下載之間如果網絡波動。然後,它會調用下面的方法
- (無效)連接:(NSURLConnection的*)連接didFailWithError:(NSError *)錯誤
您可以處理此方法