getTasksWithCompletionHandler
私は NSURLSessionを呼び出すことを知っています:
セッション内のすべての未処理のデータ、アップロード、およびダウンロード タスクで完了コールバックを非同期的に呼び出します。
ただし、実験から、メソッドによって返されるデータ、アップロード、およびダウンロードのタスク配列を確認できます。
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
and getAllTasksWithCompletionHandler
- iOS 9 でリリースされた後者 - は、完了クロージャーの署名のみが異なるように見えることに注意してください。
また、やや興味をそそられることに、、、を与えるプロパティがNSURLSessionTask
あります。state
NSURLSessionTaskState
Running
Suspended
Canceling
Completed
非実行タスクのリストにアクセスする方法はありますか? NSURLSession
まだ再開されていないものはありますか?