NSURLSession类支持三种类型的任务:加载数据、下载和上传,即Data Task,DownLoad Task和Upload Task。Session Task是整个NSURLSession架构的核心目标。
Data Task用于加载数据,使用全局的sharedSession()和func dataTaskWithRequest方法创建,示例代码如下:
import UIKitclass 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 UIKitclass VIEwController: UIVIEwController { func sessionSimpleDownload() { //创建Session对象 var url:NSURL! = NSURL(string: "http://www.yjz9.com/upload@R_404_6852@/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 @R_404_6852@Manager:NS@R_404_6852@Manager = NS@R_404_6852@Manager.defaultManager() @R_404_6852@Manager.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(contentsOf@R_404_6852@: documents) var uploadTask = session.uploadTaskWithRequest(request,fromData: imgData,completionHandler: { (var data:NSData?,var error:NSError? )-> VoID in println("上传完毕") }) uploadTask.resume()}}总结
以上是内存溢出为你收集整理的Swift语言IOS8开发战记26 NSURLSession加载数据、上传下载全部内容,希望文章能够帮你解决Swift语言IOS8开发战记26 NSURLSession加载数据、上传下载所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)