Swift语言IOS8开发战记26 NSURLSession加载数据、上传下载

前端之家收集整理的这篇文章主要介绍了Swift语言IOS8开发战记26 NSURLSession加载数据、上传下载前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

NSURLSession类支持三种类型的任务:加载数据、下载和上传,即Data Task,DownLoad Task和Upload Task。Session Task是整个NSURLSession架构的核心目标。

Data Task用于加载数据,使用全局的sharedSession()和func dataTaskWithRequest方法创建,示例代码如下:

import UIKit

class ViewController: UIViewController {

    func sessionLoadData() {
    //创建Session对象
        var url:NSURL! = NSURL(string: "http://www.weather.com.cn/adat/sk/101010100.html")
        //创建请求对象
        var request:NSURLRequest = NSURLRequest(URL: url)
        let session = NSURLSession.sharedSession()
        var dataTask = session.dataTaskWithRequest(request,completionHandler:
            
            { (var data:NSData?,var response:NSURLResponse?,var error:NSError?)-> Void in
            //返回错误信息
            if error != nil
            {
                println(error?.code)
                println(error?.description)
                }
            else {
                var jsonString = NSString(data: data!,encoding: NSUTF8StringEncoding)
                println(jsonString)
                
                
                }
            }) as NSURLSessionTask
        dataTask.resume()
    
}
}

第二种DownLoad Task用于完成下载文件的任务

如果不需要获取进度,则使用全局的sharedSession()和func downLoadTaskWithRequest方法

import UIKit

class ViewController: UIViewController {

    func sessionSimpleDownload() {
    //创建Session对象
        var url:NSURL! = NSURL(string: "http://www.yjz9.com/uploadfile/2014/1126/20141126115435256.jpg")
        //创建请求对象
        var request:NSURLRequest = NSURLRequest(URL: url)
        let session = NSURLSession.sharedSession()
        var downloadTask = session.downloadTaskWithRequest(request,completionHandler: {(var location:NSURL?,var error:NSError?) ->Void in
            //输出下载文件原来的存放目录
            println("location: \(location)")
            
            //location 位置转换
            var locationPath = location?.path
            //拷贝到我们自己的目录中
            let documents:String = NSHomeDirectory() + "/Documents/1.png"
            //创建文件管理器
            var fileManager:NSFileManager = NSFileManager.defaultManager()
            fileManager.moveItemAtPath(locationPath!,toPath: documents,error: nil)
            println("location: \(documents)")
        })
        downloadTask.resume()
}
}

运行程序,然后查看路径;


文件已经被拷贝进去了。

上传文件和下载文件方法非常相似:

    func sessionSimpleUpload() {
    //创建Session对象
        var url:NSURL! = NSURL(string: "http://www.iphonetrain.com/shop/data/")
        //创建请求对象
        var request:NSURLRequest = NSURLRequest(URL: url)
        let session = NSURLSession.sharedSession()
        //上传数据流
        let documents:String = NSHomeDirectory() + "/Documents/1.png"
        var imgData = NSData(contentsOfFile: documents)
        var uploadTask = session.uploadTaskWithRequest(request,fromData: imgData,completionHandler: {
            (var data:NSData?,var error:NSError? )-> Void in
            println("上传完毕")
        })
        uploadTask.resume()
}
}

猜你在找的Swift相关文章