天天看點

iOS開發網絡篇—使用ASI架構進行檔案下載下傳

ios開發網絡篇—使用asi架構進行檔案下載下傳

說明:本文介紹ios網絡程式設計中經常用到的架構asi,如何使用該架構進行檔案的下載下傳。

一、簡單介紹

代碼示例:

iOS開發網絡篇—使用ASI架構進行檔案下載下傳
iOS開發網絡篇—使用ASI架構進行檔案下載下傳

代碼說明:上面的代碼從伺服器上異步下載下傳檔案,每當接收到資料的時候就列印接收到的資料的長度。

列印結果如下:

iOS開發網絡篇—使用ASI架構進行檔案下載下傳

注意:在實際的開發中不能這樣去下載下傳檔案,因為他不斷的拼接檔案資料的操作是在記憶體中進行的,如果所下載下傳檔案的資料較大,那麼将會直接導緻記憶體爆掉。

二、實際開發中的使用

代碼示例(示範2):

iOS開發網絡篇—使用ASI架構進行檔案下載下傳
iOS開發網絡篇—使用ASI架構進行檔案下載下傳

下載下傳成功:

iOS開發網絡篇—使用ASI架構進行檔案下載下傳

代碼說明:

在實際的開發中如果要使用asi架構來下載下傳伺服器上的檔案,隻需要執行下面簡單的幾個步驟即可(參照上面的代碼)。

(1)建立請求對象;

(2)設定下載下傳檔案儲存的路徑;

(3)發送下載下傳檔案的網絡請求(異步)。

按照上面的幾個步驟執行,程式會自動開啟異步線程,一點一點的把資料寫入到指定的檔案路徑,而且不論是下載下傳多大的檔案都不會占用大量的記憶體空間。

asi架構是基于底層的cfnoteworking的,性能很好。當然也可以設定block,或者是監聽下載下傳的進度。

下面介紹使用asi架構下載下傳檔案,如何監聽下載下傳的進度。

設定下載下傳代理,注意不是控制器代理。

iOS開發網絡篇—使用ASI架構進行檔案下載下傳
iOS開發網絡篇—使用ASI架構進行檔案下載下傳

asi的檔案下載下傳還有一個屬性可以設定是否支援斷點下載下傳。

設定支援斷點下載下傳的代碼如下:

 request.allowresumeforfiledownloads=yes;

這樣的話,比如一個檔案已經下載下傳了百分之30到程式的沙盒中,這個時候取消了下載下傳。當下一次點選下載下傳檔案的時候,會接着下載下傳剩餘的百分之70并一點一點的寫入到沙盒中。

提示:取消下載下傳的代碼為:

    [request cleardelegatesandcancel];

三,結合一些進度顯示的第三方架構使用

去code4app上面随便下載下傳一個顯示下載下傳進度的第三方架構,這裡以dacircularprogressview為例子。

導入該架構必要的檔案後,簡單使用如下。

iOS開發網絡篇—使用ASI架構進行檔案下載下傳
iOS開發網絡篇—使用ASI架構進行檔案下載下傳

顯示效果:

iOS開發網絡篇—使用ASI架構進行檔案下載下傳

特别提示:

iOS開發網絡篇—使用ASI架構進行檔案下載下傳

标簽: ios開發, 網絡篇

繼續閱讀