【发布时间】:2014-11-07 23:12:12
【问题描述】:
我正在尝试按照 Apple 的 Swift 文档 (https://developer.apple.com/library/mac/documentation/swift/conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html) 的“错误报告”部分中的说明实施错误处理,但我一定遗漏了一些东西。
我有下面的代码(简化),即使网络请求明显失败(我与互联网断开连接,并且打印了“错误”),我作为指针传递的错误变量在完成块内总是为零...
我做错了什么?谢谢!
override func viewDidLoad() {
super.viewDidLoad()
var error: NSError?
// THIS IS ACTUALLY IN ANOTHER CLASS,
// BUT EVEN IF PLACED IN THE SAME CLASS I STILL GET THE SAME PROBLEM
doStuff({ (result) -> Void in
println("\(error)") // THIS PRINTS NIL
}, errorPointer: &error)
}
func doStuff(completion: (result:SomeType) -> Void, errorPointer: NSErrorPointer) {
// SETUP CODE NOT INCLUDED
let downloadTask = manager.downloadTaskWithRequest(req, progress: nil, destination: { (url, response) -> NSURL! in
return destinationURL
}) { (response, url, error) -> Void in
// CREATE RESULT
if(error != nil && errorPointer != nil) {
println(“ERROR”) // THIS GETS PRINTED
errorPointer.memory = error // ALSO TRIED NSError(...)
}
completion(result)
}
downloadTask.resume()
}
【问题讨论】: