web-dev-qa-db-ja.com

NSURLSession dataTaskForRequest:completion:インスタンスに送信された認識されないセレクター

独自のセッションオブジェクトNSURLSession()を作成してURLを要求しようとすると、認識できないセレクター例外が発生しますが、共有セッションNSURLSession.sharedSession()を使用するとすべて正常に機能します。どうして?

var url = NSURL(string: "http:/www.google.com")
if url != nil {
    //throws unrecognized selector when dataTaskWithURL is called
    let session=NSURLSession()
    session.dataTaskWithURL(url!)

   //works
    let sharedSession=NSURLSession.sharedSession()
    sharedSession.dataTaskWithURL(url!)
}
47
Alexey

init URLSession を設定する必要があります:

URLSession(configuration: .default)

または共有セッションを使用する

URLSession.shared
104
Arsen

In Swift 3.0以降:

        URLSession.shared.dataTask(with: url, completionHandler:
        {
            (data, response, error) in

            //Your code
        }).resume()
5
pierre23

共有セッションとは別に、NSURLSessionはこれら2つの方法のいずれかで初期化する必要があります

init(configuration configuration: NSURLSessionConfiguration)


init(configuration configuration: NSURLSessionConfiguration,
               delegate delegate: NSURLSessionDelegate?,
             delegateQueue queue: NSOperationQueue?)
2
vadian

宣言中に初期化を行います:-

var session = URLSession(configuration: .default)
1
Jay Mehta