iOS開發網絡篇—使用ASI架構進行檔案下載下傳
說明:本文介紹iOS網絡程式設計中經常用到的架構ASI,如何使用該架構進行檔案的下載下傳。
一、簡單介紹
代碼示例:
<a target="_blank"></a>
代碼說明:上面的代碼從伺服器上異步下載下傳檔案,每當接收到資料的時候就列印接收到的資料的長度。
列印結果如下:
注意:在實際的開發中不能這樣去下載下傳檔案,因為他不斷的拼接檔案資料的操作是在記憶體中進行的,如果所下載下傳檔案的資料較大,那麼将會直接導緻記憶體爆掉。
二、實際開發中的使用
代碼示例(示範2):
下載下傳成功:
代碼說明:
在實際的開發中如果要使用asi架構來下載下傳伺服器上的檔案,隻需要執行下面簡單的幾個步驟即可(參照上面的代碼)。
(1)建立請求對象;
(2)設定下載下傳檔案儲存的路徑;
(3)發送下載下傳檔案的網絡請求(異步)。
按照上面的幾個步驟執行,程式會自動開啟異步線程,一點一點的把資料寫入到指定的檔案路徑,而且不論是下載下傳多大的檔案都不會占用大量的記憶體空間。
asi架構是基于底層的cfnoteworking的,性能很好。當然也可以設定block,或者是監聽下載下傳的進度。
下面介紹使用asi架構下載下傳檔案,如何監聽下載下傳的進度。
設定下載下傳代理,注意不是控制器代理。
asi的檔案下載下傳還有一個屬性可以設定是否支援斷點下載下傳。
設定支援斷點下載下傳的代碼如下:
request.allowResumeForFileDownloads=YES;
這樣的話,比如一個檔案已經下載下傳了百分之30到程式的沙盒中,這個時候取消了下載下傳。當下一次點選下載下傳檔案的時候,會接着下載下傳剩餘的百分之70并一點一點的寫入到沙盒中。
提示:取消下載下傳的代碼為:
[request clearDelegatesAndCancel];
三,結合一些進度顯示的第三方架構使用
去code4app上面随便下載下傳一個顯示下載下傳進度的第三方架構,這裡以DACircularProgressView為例子。
導入該架構必要的檔案後,簡單使用如下。
顯示效果:
特别提示: