2016-10-11 150 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 ... }