URLSession 在 Swift 3 中抛出转换错误
URLSession throws conversion error in Swift 3
我刚刚下载了Xcode8,现在是以前的功能代码:
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 改变了什么?
如果你给他们可选的('?')而不是强迫他们,他们似乎可以毫无问题地运行:
let task = URLSession.shared.dataTask(with: Request) {
(data : Data?, response : URLResponse?, error : Error?) in
}
错误消息只是说编译器想要
let task = URLSession.sharedSession.dataTaskWithRequest(request) {
(data : Data?, response : URLResponse?, error : Error?) in
}
但您根本不需要类型注释,这神奇地避免了错误
let task = URLSession.sharedSession.dataTaskWithRequest(request) {
(data, response, error) in
}
但是在Swift3中你必须写
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in ... }
我刚刚下载了Xcode8,现在是以前的功能代码:
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 改变了什么?
如果你给他们可选的('?')而不是强迫他们,他们似乎可以毫无问题地运行:
let task = URLSession.shared.dataTask(with: Request) {
(data : Data?, response : URLResponse?, error : Error?) in
}
错误消息只是说编译器想要
let task = URLSession.sharedSession.dataTaskWithRequest(request) {
(data : Data?, response : URLResponse?, error : Error?) in
}
但您根本不需要类型注释,这神奇地避免了错误
let task = URLSession.sharedSession.dataTaskWithRequest(request) {
(data, response, error) in
}
但是在Swift3中你必须写
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in ... }