1,使用Data Task加载数据
使用全局的sharedSession()和dataTaskWithRequest方法创建。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
func
sessionLoadData(){
//创建NSURL对象
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)
}
})
as
NSURLSessionTask
//使用resume方法启动任务
dataTask.resume()
}
|
2,使用Download Task来下载文件
(1)不需要获取进度
使用sharedSession()和downloadTaskWithRequest方法即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
func
sessionSimpleDownload(){
//下载地址
//请求
request:
NSURLRequest
=
(
URL
: url!)
session =
NSURLSession
.sharedSession()
//下载任务
downloadTask = session.downloadTaskWithRequest(request,
completionHandler: { (location:
?,response:
NSURLResponse
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.5em!important; margin:0px!important; overflow:visible!important; padding:1px 0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,error:
NSError
?)
->
Void
in
print
(
"location:\(location)"
)
//location位置转换
locationPath = location!.path
//拷贝到用户目录
documnets:
String
NSHomeDirectory
() +
"/Documents/1.png"
//创建文件管理器
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!)
session = currentSession()
NSURLSession
//下载任务
downloadTask = session.downloadTaskWithRequest(request)
//使用resume方法启动任务
downloadTask.resume()
}
//创建一个下载模式
currentSession() ->
{
var
predicate:dispatch_once_t = 0
currentSession:
? =
nil
dispatch_once(&predicate,{
currentSession =
(configuration: config,delegate:
self
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.5em!important; margin:0px!important; overflow:visible!important; padding:1px 0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,
delegateQueue:
)
})
return
currentSession!
}
//下载代理方法,下载结束
func
URLSession
(session:
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.5em!important; margin:0px!important; overflow:visible!important; padding:1px 0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,downloadTask:
NSURLSessionDownloadTask
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.5em!important; margin:0px!important; overflow:visible!important; padding:1px 0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,
didFinishDownloadingToURL location:
) {
//下载结束
(
"下载结束"
)
"location:\(location)"
)
//location位置转换
locationPath = location.path
//拷贝到用户目录
documnets:
NSHomeDirectory
() +
"/Documents/2.png"
//创建文件管理器
fileManager:
NSFileManager
.defaultManager()
"new location:\(documnets)"
)
}
//下载代理方法,监听下载进度
didWriteData bytesWritten:
Int64
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.5em!important; margin:0px!important; overflow:visible!important; padding:1px 0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,totalBytesWritten:
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.5em!important; margin:0px!important; overflow:visible!important; padding:1px 0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,
totalBytesExpectedToWrite:
) {
//获取进度
written:
CGFloat
= (
)(totalBytesWritten)
total:
)(totalBytesExpectedToWrite)
pro:
= written/total
"下载进度:\(pro)"
)
}
//下载代理方法,下载偏移
didResumeAtOffset fileOffset:
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.5em!important; margin:0px!important; overflow:visible!important; padding:1px 0px!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-family:Consolas,expectedTotalBytes:
) {
//下载偏移,主要用于暂停续传
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
}
3,使用Upload Task来上传文件
原文地址:https://www.jb51.cc/swift/324582.html 版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。 相关推荐 |