Swift语言IOS8开发战记26 NSURLSession加载数据、上传下载
来源:互联网 发布:js 判断是否为整数 编辑:程序博客网 时间:2024/05/01 14:08
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/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 response:NSURLResponse?,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 response:NSURLResponse?,var error:NSError? )-> Void in println("上传完毕") }) uploadTask.resume()}}
1 0
- Swift语言IOS8开发战记26 NSURLSession加载数据、上传下载
- Swift语言IOS8开发战记1.Button与Alert
- swift语言IOS8开发战记2.tableview
- swift语言IOS8开发战记3.tableViewCell
- swift语言IOS8开发战记4.custom tableViewCell
- swift语言IOS8开发战记6.Alert&ActionSheet
- Swift语言IOS8开发战记7.Delete TableViewCell
- Swift语言IOS8开发战记8.NavigationController
- Swift语言IOS8开发战记10.Data Model
- swift语言IOS8开发战记11 Set NavigationController
- swift语言IOS8开发战记12 Font Of Label
- swift语言IOS8开发战记13 Review Controller
- swift语言IOS8开发战记14 UIView Animation
- swift语言IOS8开发战记15 Animation Delay
- swift语言IOS8开发战记16 Protocol and Map
- swift语言IOS8开发战记17 MKTableView
- swift语言IOS8开发战记18 NavigationItem
- swift语言IOS8开发战记19 UIImagePickerController
- Bash中一些重要的命令
- hdu 5266 pog loves szh III LCA+RMQ
- C# 代码规范
- 【我的书】Unity Shader的书 — 目录(2016.5.19最后一次更新)
- comparator接口与Comparable接口的区别
- Swift语言IOS8开发战记26 NSURLSession加载数据、上传下载
- VS2010安装包制作 [桌面快捷图标 右键属性 打开文件位置]问题解决
- SAT阅读常见重要词汇
- swift 之?和!
- WPF调用线程(三)线程池初步
- 手把手教你使用CocoaPods管理你的iOS第三方开源类库
- SQLite数据库中多线程使用问题
- 运动补偿参考1
- 基于JavaScript离线编译工具环境搭建