2012-02-29 43 views
0

我需要改進我的編碼,所以我找到了更好的東西。更好地處理從iPhone中的服務器獲取數據

我的問題是我需要從10個不同的url.that網址擷取來自服務器的數據有例如圖像100

我需要打

http://192.168.11.222/images/a http://192.168.11.222/images/b http://192.168.11.222/images/c http://192.168.11.222/images/d http://192.168.11.222/images/e http://192.168.11.222/images/f http://192.168.11.222/images/g http://192.168.11.222/images/h http://192.168.11.222/images/i

這樣一個文件夾就是服務器上包含圖像的文件夾。

目前我通過NSURLConnectionWithTag執行此操作,然後解析response.and get saved.is還有其他更好的方法來處理這個問題嗎?我還需要顯示進度條,在這種情況下也很困難。

回答

1

我會設置一個NSOperationQueue,每個URL只需一次操作,並將其設置爲三個併發操作。然後使用NSURLConnection的非異步API進行下載。

對於你的進度條,它可能足以在每個單獨文件完成後更新進度,並且每次(或某物)執行其中的兩個。無論如何,等待時間將超過「進度」的一半,因此除非您開始嘗試預測ping時間,否則基於實際傳輸字節的進度條將不夠準確(除非這些圖像非常大)。

您將需要了解操作隊列和GCD是如何工作的,但一旦您完成了排序,它實際上不會有太多的代碼,而且它將堅如磐石。

基本上,您希望將代碼的「塊」添加到要下載的每個URL的操作隊列中,並且隊列會計算出如何下載每個代碼,然後當每個代碼塊完成時,它會執行另一個阻止主線程(dispatch_sync(dispatch_get_main_queue(), ^{ ... }))更新進度條。

0

如果您要在您的應用程序中編寫與網絡相關的代碼,我建議您查看AFNetworking,它是一個已經提供的網絡API iOS包裝,它的麻煩更少。