2012-02-22 56 views
0

我試圖在嘗試上傳和下載文件時做一些進度指示。實現NSURLConnectionDelegate協議的進度指示器

一直在閱讀,看起來像這是我需要使用的方法。

- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite 

我想了解更多關於該功能的工作原理(即當它被稱爲等),但似乎無法找到的參考文檔。我去了這個URL,但它沒有提到任何關於這個特定功能的東西。

https://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSURLConnectionDelegate_Protocol/Reference/Reference.html%23//apple_ref/occ/intf/NSURLConnectionDelegate

我在哪裏可以閱讀更多關於它?

謝謝
三通

+1

我認爲這個答案可能會對你有幫助:http://stackoverflow.com/questions/7803472/nsurlconnection-methods-no-more-available-in-ios5 – calinb 2012-02-22 21:06:03

+0

Ooos,10分鐘寫答案,你已經聯繫了一個更好的已經回答。 – Sulthan 2012-02-22 21:28:04

回答

2

NSURLConnection有其代表的非正式協議。這在iOS 5中發生了變化(我認爲OSX上也發生過這種情況)。他們不贊成在NSURLConnection中聲明的方法,並將它們轉移到正式協議NSURLConnectionDelegateNSURLConnectionDataDelegate

現在有趣的部分。他們不贊成使用這些方法,他們甚至將其從NSURLConnection文檔中刪除,但他們沒有記錄新的正式協議。 目前只有NSURLConnectionDelegate被記錄。 NSURLConnectionDataDelegate在任何地方都沒有提及。

如何找到該方法的功能有兩種方法。

  1. 查看以前版本的NSURLConnection文檔(例如iOS 4.3)。我會給你一個鏈接,但我無法在網上找到它。也許你已經在XCode中下載了該庫

  2. 按下Xcode中的cmd-shift-o,鍵入NSURLConnectionDataDelegate,然後按回車。你已經找到了頭部和方法都存在一個描述:

    連接:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite: 被上載操作期間調用提供 進度的反饋。請注意,如果請求需要重新發送請求 ,值可能會以意外的方式發生更改 。

0

嘗試AFNetworking據beocming流行的替代ASIHTTPRequest的,如果你關心支持。此外它還內置了對下載進度的支持。 (See discussion on this link.Here is a recent discussion of how to actually use it

UPDATE

How do I track upload or download progress?(AFNetworking FAQ)

AFURLConnectionOperation提供方法setUploadProgressBlock:和setDownloadProgressBlock :.每個方法都有一個參數,這個參數是在請求生命週期中定期執行的一個塊。該塊沒有返回類型,並有3個參數:爲此回調讀取或寫入的字節數,到目前爲止讀取或寫入的總字節數,以及預期讀取或寫入的字節總數。

如果要更新進度欄,可以設置相應的進度塊,以將進度數設置爲讀取或寫入的總字節數除以預期的數量,並在0.0和1.0之間進行歸一化。基於此值的UI更新將隨請求的執行而異步更新。

+0

爲何選擇投票?我想進行必要的更正。 – Jim 2012-02-22 22:46:27

+0

這個答案與問題無關。 – Sulthan 2012-02-22 23:23:55

+0

看起來它直接說明了他的第一個陳述。 「我試圖在嘗試上傳和下載文件時做一些進步指示」我不認爲它是無關緊要的。 – Jim 2012-02-22 23:40:48