码迷,mamicode.com
首页 > 编程语言 > 详细

Swift网络开发-在DownloadTask完成前获取Resposne

时间:2015-05-06 23:06:25      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:swift   response   download   下载   

原创Blog,转载请注明出处
blog.csdn.net/hello_hwc


前言:这是今天在StackOverflow上给阿三回答的一个问题,在这里写成博客,方便遇到同样问题的人


原理:

  1. 用DataTask获取Response,并且将DataTask转变成DownloadTask - 对应代理函数didReceiveResponse
  2. 在转变成downloadTask后,开始downloadTask-对应代理函数didBecomeDownloadTask
  3. 在download完成后,保存文件-对应代理函数didFinishDownloadingToURL

注意:

  • Demo没有进行错误处理
  • Demo没有写断点续传的部分

这些在我之前网络开发的部分讲的很清楚,不懂的可以找一下我之前的博客
或者到我的iOS SDK详解专栏里找一下

http://blog.csdn.net/column/manage.html?alias=huangwenchen-ios-sdk


完整代码
建立一个single view的swift工程,拷贝如下代码,就能看到效果了。

import UIKit
class ViewController: UIViewController,NSURLSessionDelegate,NSURLSessionDataDelegate,NSURLSessionDownloadDelegate{
    var session:NSURLSession?
    var dataTask:NSURLSessionDataTask?
    let url = NSURL(string:"http://www.zastavki.com/pictures/originals/2013/Photoshop_Image_of_the_horse_053857_.jpg")!
    var infoDic = NSMutableDictionary()
    override func viewDidLoad() {
        super.viewDidLoad()
        let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
        let manqueue = NSOperationQueue.mainQueue()
        session = NSURLSession(configuration: configuration, delegate:self, delegateQueue: manqueue)
        dataTask = session?.dataTaskWithRequest(NSURLRequest(URL: url))
        dataTask?.resume()
    }
    func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveResponse response: NSURLResponse, completionHandler: (NSURLSessionResponseDisposition) -> Void) {
        NSLog("%@",response.description)
        completionHandler(NSURLSessionResponseDisposition.BecomeDownload)
    }
    func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didBecomeDownloadTask downloadTask: NSURLSessionDownloadTask) {
        downloadTask.resume()
    }
    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
        NSLog("%@",location);
        //Get response
        NSLog("%@", downloadTask.response!.description)

    }
}

Swift网络开发-在DownloadTask完成前获取Resposne

标签:swift   response   download   下载   

原文地址:http://blog.csdn.net/hello_hwc/article/details/45540371

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!