iOS網(wǎng)絡篇-NSURLSessionDownloadTask進度下載(續(xù)上節(jié))

簡述:

在上一節(jié)中介紹了一下NSURLSession,也介紹了一下NSURLSessionDownloadTask的普通下載圖片使用蘸嘶,并沒有使用到具有進度的下載,那么在這一節(jié)中陪汽,我們看看如何使用進度下載训唱,實時的進行界面的更新,這里的界面的更新也就是我們的Progress View(進度條)控件進度的一個更新

代碼:

1挚冤、首先在storyboard里面拖入一個Progress View(進度條)控件,并且在控制器中拖入Progress View屬性况增,用于后面的界面更新
    @interface ViewController ()<NSURLSessionDownloadDelegate>
        @property (weak, nonatomic) IBOutlet UIProgressView *progressView;
    @end
2、完成上面的步驟了训挡,那么現(xiàn)在就是進行三部曲了
    2.1澳骤、創(chuàng)建NSURLSession
    2.2、創(chuàng)建任務(task)
    2.3澜薄、執(zhí)行任務

    - (void)viewDidLoad {
        [super viewDidLoad];
        // 1.創(chuàng)建NSURLSession
        /*
         第一個參數(shù): 全局的配置
         第二個參數(shù): 讓誰成為session的代理
         第三個參數(shù): 告訴系統(tǒng)代理方法在哪個線程中執(zhí)行
         */
        //1.1創(chuàng)建URL
        NSURL *url = [NSURL URLWithString:@"http://d.pcs.baidu.com/file/2b66fa1c93d8322d5299a1befc59b16c?fid=204559171-250528-1042286675318370&time=1453435914&rt=sh&sign=FDTAERV-DCb740ccc5511e5e8fedcff06b081203-X%2Bcz8N4IQb25c4wIKAyYl1HHW2M%3D&expires=8h&chkv=1&chkbd=0&chkpc=&dp-logid=498837374116132296&dp-callid=0&r=107651804"];
        NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
        // 2为肮、利用NSURLSessionDownloadTask創(chuàng)建任務(task)
        NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url];
        // 3、執(zhí)行任務
        [task resume];
    }
3肤京、基本上到這里就是設置代理了颊艳,代理一運行,我們就完事了,
    /*
     1.接收到服務器返回的數(shù)據(jù)
         bytesWritten: 當前這一次寫入的數(shù)據(jù)大小
         totalBytesWritten: 已經(jīng)寫入到本地文件的總大小
         totalBytesExpectedToWrite : 被下載文件的總大小
     */
    - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
    {
        //給progressView賦值進度
        self.progressView.progress = 1.0 * totalBytesWritten / totalBytesExpectedToWrite;
    }

    /*
     2.下載完成
         downloadTask:里面包含請求信息籽暇,以及響應信息
         location:下載后自動幫我保存的地址
     */
    - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
    {
        //location為下載好的文件路徑
        //NSLog(@"didFinishDownloadingToURL, %@", location);


        //1温治、生成的Caches地址
        NSString *cacepath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingString:downloadTask.response.suggestedFilename];
        //2、移動圖片的存儲地址
        NSFileManager *manager = [NSFileManager defaultManager];
        [manager moveItemAtURL:location toURL:[NSURL fileURLWithPath:cacepath] error:nil];

    }

    /*
     3.請求完畢
        如果有錯誤, 那么error有值
     */
    - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
    {
        if (!error) {
            NSLog(@"請求成功");
        }else{
            NSLog(@"請求失敗");
        }

    }

補充

在代理中戒悠,我們有兩個重要的代理方法:

  • 第一個接受服務器返回的數(shù)據(jù)熬荆,里面的話給我們傳過來三個參數(shù):
  • 1、當前返回數(shù)據(jù)的大小
  • 2绸狐、已經(jīng)寫入臨時文件數(shù)據(jù)的大小
  • 3卤恳、下載數(shù)據(jù)的總大小

那么在這個代理方法里面就是設置好我們Progress View(進度條)控件的進度的,只要第二個重要的代理方法就是

  • 第二個就是下載完成之后寒矿,回調(diào)的方法突琳,里面?zhèn)鹘o我們兩個參數(shù):

  • 1、請求信息已經(jīng)響應信息

  • 2符相、下載完拆融,文件保存的路徑(路徑為我們沙盒的temp臨時文件夾,里面的數(shù)據(jù)隨時可能被刪除)

我們可以在這個方法中把所下載的文件啊终,移動到某一個長期保存而不會隨時刪除的文件夾中镜豹,這里我是把它保存到我們的Caches中去了

結(jié)束

                  本章到此結(jié)束
            歡迎各位碼友隨意轉(zhuǎn)載并指正
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蓝牲,隨后出現(xiàn)的幾起案子趟脂,更是在濱河造成了極大的恐慌,老刑警劉巖例衍,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昔期,死亡現(xiàn)場離奇詭異,居然都是意外死亡佛玄,警方通過查閱死者的電腦和手機硼一,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翎嫡,“玉大人欠动,你說我怎么就攤上這事』笊辏” “怎么了具伍?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長圈驼。 經(jīng)常有香客問我人芽,道長,這世上最難降的妖魔是什么绩脆? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任萤厅,我火速辦了婚禮橄抹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惕味。我一直安慰自己楼誓,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布名挥。 她就那樣靜靜地躺著疟羹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪禀倔。 梳的紋絲不亂的頭發(fā)上榄融,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音救湖,去河邊找鬼愧杯。 笑死,一個胖子當著我的面吹牛鞋既,可吹牛的內(nèi)容都是我干的力九。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涛救,長吁一口氣:“原來是場噩夢啊……” “哼畏邢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起检吆,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎程储,沒想到半個月后蹭沛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡章鲤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年摊灭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片败徊。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡帚呼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出皱蹦,到底是詐尸還是另有隱情煤杀,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布沪哺,位于F島的核電站沈自,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辜妓。R本人自食惡果不足惜枯途,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一忌怎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酪夷,春花似錦榴啸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腥例,卻和暖如春辅甥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背燎竖。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工璃弄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人构回。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓夏块,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纤掸。 傳聞我的和親對象是個殘疾皇子脐供,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,117評論 25 707
  • iOS網(wǎng)絡架構(gòu)討論梳理整理中。借跪。政己。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,192評論 1 23
  • iOS開發(fā)系列--網(wǎng)絡開發(fā) 概覽 大部分應用程序都或多或少會牽扯到網(wǎng)絡開發(fā)掏愁,例如說新浪微博歇由、微信等,這些應用本身可...
    lichengjin閱讀 3,661評論 2 7
  • 柳哲 我研究柳氏文化20年果港,收藏的柳氏家譜就有100余種沦泌。其中有一套韓國《文化柳氏世譜》,資料特別豐富辛掠,史料價值極...
    柳志儒閱讀 1,278評論 1 1
  • 一同事老師谢谦,人品只能呵呵噠 一起給學生晚輔,那態(tài)度就是典型得趕著去投胎萝衩。只想三下兩下把學生全部驅(qū)回家回挽。 一到九點,...
    顏小牛閱讀 233評論 0 0