2012-11-19 26 views
0

在我的單一視圖中,我有圖像和音頻文件的上傳和下載選項,我成功實現了帶有進度條的下載代碼,指示下載進度。需要關於NSURLConection的幫助

我在顯示上傳進度時遇到問題,目前我正在使用[NSURLConnection sendAsynchronousRequest:,但我也想顯示上傳進度,此方法沒有數據進度的回調塊或委託功能。所以我試圖用connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:但這種方法會觸發?

要下載我這樣做是爲了觸發NSURLConnectionDataDelegate方法和讓我的工作做好。

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

如果我使用[NSURLConnection connectionWithRequest:someReq delegate:self]進行上傳,將我兩次在一個文件中設定的委託,首先在上傳方法被調用和第二時下載方法被調用,這是一個正確的做法?

最後如何[NSURLConnection sendAsynchronousRequest:是有用的,它沒有關於數據的進展委託或回調,爲什麼要使用它?

+0

你試過AFNetworking嗎? – iWheelBuy

+0

我不想使用任何圖書館......感謝您的回覆。 –

+0

爲什麼不呢? =)它建立在NSURLConnection之上! – iWheelBuy

回答

1

下載和上傳可以是應用程序的兩個不同時刻。如果您創建兩次負責啓動NSURLConnection的對象,則將代碼設置爲self兩次,否則沒有任何意義。

完整的方法簽名爲sendAsynchronousRequest:queue:completionHandler:這使得一個巨大的不同。在這種情況下,您不需要設置委託,因爲響應來自處理程序(NSData *)。

+0

Jacky Boy來拯救:) ...非常感謝答案。 –

+0

請多說一句,不可能通過sendAsynchronousRequest顯示上傳進度:queue:completionHandler:?我對麼? –

+0

我認爲你不能使用'sendAsynchronousRequest:queue:completionHandler:',因爲你只有一個'completionHandler'(當你得到你想要的時候調用)。 'connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:',已被棄用,所以你不應該使用它。 – Peres