【发布时间】:2015-08-20 23:43:50
【问题描述】:
我已经开始将我的一个项目转换为 Swift 2 并且遇到了这个问题。下面开始这个块是完全有效的try/catch,实际上它是由Xcode迁移工具生成的。
do {
requestData = try NSJSONSerialization.dataWithJSONObject(requestContents, options: [])
} catch var error as NSError {
requestError = error
requestData = nil
}
如果我在闭包中使用相同的代码,例如 dataTaskWithRequest,我会收到错误消息。错误在于任务分配,但它是导致它的问题。以下也有效,但我没有捕捉到错误。
let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, taskError) -> Void in
if taskError != nil {
NSLog("Error making request: " + taskError!.localizedDescription)
}
else {
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary
if let parseJSON = json as NSDictionary? {
// do some parsing here
}
}
catch {
NSLog("Error in JSON serialization")
}
}
})
task.resume()
但如果我尝试通过以下方式捕获错误:
} catch let e as NSError {
我收到此错误:
'(_, _, _) throws 类型的抛出函数的无效转换 -> 无效'到非抛出函数类型'(NSData?,NSURLResponse?, NSError?)-> 无效'
我确实发现了:
} catch _ {
有效,但对我有很多好处。
我是遗漏了什么还是应该提交错误?
(这是 Xcode 7b5)
【问题讨论】:
标签: ios swift swift2 xcode7-beta5