2011-03-01 24 views
1

我正在Objective-C中編寫一個下載管理器,並且我已經使用了簡歷功能。我在收到數據時將數據寫入磁盤,以便在下載因任何原因而中斷時,應該從中斷的地方繼續。蘋果說你應該期待一個或多個- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response事件。在這種情況下,他們說你應該重置之前收到的任何數據,因爲你的下載被重定向,並且你已經收到的字節是無效的,所以我刪除了現有的文件並用0字節重新創建。但是,如果我多次收到此事件,我必須以部分下載的形式刪除以前收到的數據,否則會影響恢復功能的用途。有針對這個的解決方法嗎?NSURLConnection:簡歷功能

我提出的解決方案是:只重置我在第一次之後收到的- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response事件的數據。這將解決大多數情況(我會認爲)。這是邏輯上的聲音?有更好的選擇嗎?文件下載有多大可能觸發多個- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response事件?

回答

1

multipart/x-mixed-replace用於服務器想要用其他東西替換它已經給你的東西。刪除目前爲止已下載的所有內容是唯一明智的選擇,當服務器告訴您將其丟棄並使用其他內容時,無法繼續下載。

文件下載觸發多個(無效)連接的可能性如何:(NSURLConnection *)連接didReceiveResponse:(NSURLResponse *)響應事件?

極不可能。它只用於某些類型的流媒體,不適用於任何需要下載管理器的內容。

2

我的建議是使用已經解決了這個問題的人的圖書館,ASIHttpRequest是我使用的。可以發現here

爲「恢復」的搜索該頁面

+2

請注意,ASIHttpRequest項目沒有更長的維護。但是你可以隨時查看代碼是如何實現的。 – jemeshsu

+0

我現在要推薦AFNetworking – Codezy