2015-10-02 14 views
33

Khi cố gắng tạo đối tượng phiên của riêng mình NSURLSession() và yêu cầu url tôi nhận được ngoại lệ bộ chọn không được công nhận nhưng khi tôi sử dụng phiên chia sẻ NSURLSession.sharedSession() mọi thứ hoạt động tốt. Làm thế nào mà?NSURLSession dataTaskForRequest: complete: bộ chọn không được nhận dạng được gửi tới instance

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!) 
} 
+1

Hãy thử khởi tạo với cấu hình. NSURLSession (cấu hình: NSURLSessionConfiguration.defaultSessionConfiguration()) – MadNik

Trả lời

76

Bạn phải init URLSession với cấu hình:

URLSession(configuration: .default) 

hoặc sử dụng phiên chia sẻ

URLSession.shared 
+3

Cảm ơn Nó hoạt động, tôi giả định rằng nó đã sử dụng mặc địnhSessionConfiguration theo mặc định nếu tôi không vượt qua bất cứ điều gì để constructor – Alex

+1

Đối với Swift 3 cú pháp bây giờ là: URLSession (cấu hình: URLSessionConfiguration .mặc định) –

1

Bên cạnh so với phiên chia sẻ NSURLSession phải được khởi tạo với một trong hai phương pháp này

init(configuration configuration: NSURLSessionConfiguration) 


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

Trong SWIFT 3.0 trở lên:

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

      //Your code 
     }).resume() 
-1

Làm khởi khi tuyên bố: -

var session = URLSession(configuration: .default) 
Các vấn đề liên quan