2014-10-12 84 views
2

我想用Swift使用NSURLSession在iOS應用中創建一個HTTP請求,但是XCode拋出一個錯誤。我一直在搜索整個stackoverflow和網絡和我的代碼是非常類似於人們的建議,但由於某種原因,它不起作用。我在XCode 6.0.1(6A317)上。用NSURLSession在Swift中的HTTP請求

var session = NSURLSession.sharedSession().dataTaskWithURL(NSURL(url), 
    completionHandler : {(data, response, error) -> Void in 
     println("Done") 
}) 
session.resume() 

錯誤指向上方第一行:「呼叫額外的參數‘completionHandler’」

使用尾隨關閉拋出一個類似的錯誤:

var session = NSURLSession.sharedSession().dataTaskWithURL(NSURL(url)) {(data, response, error) -> Void in 
    println("Done") 
} 
session.resume() 

的誤差也在第一行:「在通話中的額外參數

我是否錯過了在這裏呢?

回答

2

顯然,我發現了錯誤所在。 問題不是與NSURLSession(),但NSURL()

NSURL(string: url) 

錯誤現在已經走了。

3

簡單的GET請求會是這樣的:

let task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: "url_here")) { data, response, error in 
} 
task.resume() 
+0

'data','response'和'error'從哪裏得到值?它們是封閉捕獲的輸出嗎?這些參數如何獲得它們的值? – Honey 2016-06-27 11:21:12

+0

這些值由NSURLSession傳遞到關閉 – mustafa 2016-06-27 11:45:19

+0

顯然!我在問怎麼!您沒有使用'completionhandler'關鍵字[this](https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/#//apple_ref/occ/instm/NSURLSession/dataTaskWithURL :completionHandler:)...你只使用'dataTaskWithURL(_ :)'這意味着你不應該接收任何參數 – Honey 2016-06-27 11:50:09