2016-10-11 193 views
-2

我剛剛下載Xcode8並引發轉換錯誤,現在前面的功能代碼:URLSession斯威夫特3

let Task = URLSession.sharedSession.dataTaskWithRequest(Request) { 

    (data : NSData!, response : URLResponse!, error : NSError!) in 

} 

引發錯誤:

Cannot convert value of type '(NSData!, URLResponse!, NSError!) ->()' to expected argument type '(Data?, URLResponse?, Error?) -> Void' 

什麼是錯誤的或者已經在Xcode 2改變了嗎?

回答

0

如果你給他們可選的(「?」),而不是強迫他們,他們似乎沒有任何問題操作:

let task = URLSession.shared.dataTask(with: Request) { 

    (data : Data?, response : URLResponse?, error : Error?) in 

} 
0

錯誤消息只是說,編譯器要

let task = URLSession.sharedSession.dataTaskWithRequest(request) { 

    (data : Data?, response : URLResponse?, error : Error?) in 

} 

但是你根本不需要類型註釋,它神奇地避免了錯誤

let task = URLSession.sharedSession.dataTaskWithRequest(request) { 

    (data, response, error) in 

} 

Howev呃在Swift 3你必須寫

let task = URLSession.shared.dataTask(with: request) { (data, response, error) in ... }