1,使用Data Task加载数据 使用全局的sharedSession()和dataTaskWithRequest方法创建。
1 2 3 4 5 6 7 @H_419_31@ 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | func sessionLoadData(){ //创建NSURL对象 let urlString: String = "http://hangge.com" url: NSURL ! = (string:urlString) //创建请求对象 request: NSURLRequest = ( URL : url) session = NSURLSession .sharedSession() dataTask = session.dataTaskWithRequest(request, completionHandler: {(data,response,error) -> VoID in if error != nil { print (error?.code) (error?.description) } else { str = Nsstring (data: data!,enCoding: NSUTF8StringEnCoding ) (str) } }) as NSURLSessionTask //使用resume方法启动任务 dataTask.resume() } |
2,使用Download Task来下载文件 (1)不需要获取进度 使用sharedSession()和downloadTaskWithRequest方法即可
1 2 3 4 5 6 7 @H_419_31@ 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | func sessionSimpleDownload(){ //下载地址 let url = NSURL (string: "http://hangge.com/blog/images/logo.png" ) //请求 request: NSURLRequest = ( URL : url!) session = NSURLSession .sharedSession() //下载任务 downloadTask = session.downloadTaskWithRequest(request, completionHandler: { (location: ?,response: NSURLResponse NSError ?) -> VoID in //输出下载文件原来的存放目录 print ( "location:\(location)" ) //location位置转换 locationPath = location!.path //拷贝到用户目录 documnets: String NSHomeDirectory () + "/documents/1.png" @H_741_403@//创建文件管理器 fileManager: NSfileManager .defaultManager() try! fileManager.moveItemAtPath(locationPath!,topath: documnets) "new location:\(documnets)" ) }) //使用resume方法启动任务 downloadTask.resume() } |
(2)实时获取进度
需要使用自定义的NSURLSession对象和downloadTaskWithRequest方法
import UIKit class VIEwController : UIVIEwController , NSURLSessionDownloadDelegate { overrIDe vIEwDIDLoad() { super .vIEwDIDLoad() sessionSeniorDownload() } //下载文件 sessionSeniorDownload(){ //下载地址 url = (string: "http://hangge.com/blog/images/logo.png" ) //请求 : url!) session = currentSession() NSURLSession //下载任务 downloadTask = session.downloadTaskWithRequest(request) //使用resume方法启动任务 downloadTask.resume() } //创建一个下载模式 currentSession() -> { var predicate:dispatch_once_t = 0 currentSession: ? = nil dispatch_once(&predicate,{ config = NSURLSessionConfiguration .defaultSessionConfiguration() currentSession = (configuration: config,delegate: self ) }) return currentSession! } //下载代理方法,下载结束 func URLSession (session: NSURLSessionDownloadTask ) { //下载结束 ( "下载结束" ) //输出下载文件原来的存放目录 "location:\(location)" ) //location位置转换 locationPath = location.path //拷贝到用户目录 documnets: NSHomeDirectory () + "/documents/2.png" //创建文件管理器 fileManager: NSfileManager .defaultManager() "new location:\(documnets)" ) } //下载代理方法,监听下载进度 dIDWriteData bytesWritten: Int64 ) { //获取进度 written: CGfloat = ( )(totalBytesWritten) total: )(totalBytesExpectedToWrite) pro: = written/total "下载进度:\(pro)" ) } //下载代理方法,下载偏移 dIDResumeatOffset fileOffset: ) { //下载偏移,主要用于暂停续传 } dIDReceiveMemoryWarning() { .dIDReceiveMemoryWarning() } 3,使用Upload Task来上传文件
以上是内存溢出为你收集整理的Swift - 使用NSURLSession加载数据、下载、上传文件全部内容,希望文章能够帮你解决Swift - 使用NSURLSession加载数据、下载、上传文件所遇到的程序开发问题。 如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。 欢迎分享,转载请注明来源:内存溢出
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
Swift - 设置程序的应用图标和启动界面
上一篇
2022-05-27
美女的 Swift 体 *** - 高阶函数
下一篇
2022-05-27
|
评论列表(0条)