Ios NSURLSession是否显示处于挂起状态的任务?
我知道在NSURLSession上调用Ios NSURLSession是否显示处于挂起状态的任务?,ios,swift,nsurlsession,nsurlsessiondatatask,Ios,Swift,Nsurlsession,Nsurlsessiondatatask,我知道在NSURLSession上调用GetTaskWithCompletionHandler: 异步调用包含所有未完成数据的完成回调, 在会话中上载和下载任务 但是,通过实验,我可以看到该方法返回的数据、上传和下载任务数组 func getTasksWithCompletionHandler(_ completionHandler: ([NSURLSessionDataTask], [NSURLSessionUploadTask], [NSURLSessionDownloadTask]) -&
GetTaskWithCompletionHandler
:
异步调用包含所有未完成数据的完成回调,
在会话中上载和下载任务
但是,通过实验,我可以看到该方法返回的数据、上传和下载任务数组
func getTasksWithCompletionHandler(_ completionHandler: ([NSURLSessionDataTask], [NSURLSessionUploadTask], [NSURLSessionDownloadTask]) -> Void)
实际上只显示正在执行的任务。即,已收到resume()
的任务
这可以通过在操场上复制粘贴此代码看到:
import UIKit
import XCPlayground
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let url = NSURL(string: "http://jsonplaceholder.typicode.com")
let request: NSURLRequest = NSURLRequest(URL: url!)
let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
NSLog("Done")
})
session.getAllTasksWithCompletionHandler { (tasks:[NSURLSessionTask]) -> Void in
NSLog("\(tasks)")
XCPlaygroundPage.currentPage.finishExecution()
}
//task.resume()
请注意,getTasksWithCompletionHandler
和getAllTasksWithCompletionHandler
——后者在iOS 9中发布——似乎只是在完成闭包的签名上有所不同
另外,有点诱人的是,NSURLSessionTask
有一个状态
属性NSURLSessionTaskState
,它让我们运行,挂起,取消,完成
是否有方法访问非执行任务列表;那些已经加入NSURLSession
但尚未恢复的任务?Apple:“每个任务都以挂起状态开始。在应用程序调用任务的resume后,它开始下载指定的资源。”创建任务对象后,您必须调用resume()方法。默认情况下,任务处于挂起状态。如何访问挂起的任务数组?在URLSession中,您将获得getallTasks方法,该方法提供所有挂起的任务数组。