Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:NSError作为NSErrorPointer传递始终为零_Ios_Swift_Nserror - Fatal编程技术网

Ios Swift:NSError作为NSErrorPointer传递始终为零

Ios Swift:NSError作为NSErrorPointer传递始终为零,ios,swift,nserror,Ios,Swift,Nserror,我正试图实现苹果Swift文档()中“错误报告”部分所述的错误处理,但我肯定遗漏了什么 我有下面的代码(简化),即使网络请求明显失败(我与internet断开连接,并且“ERROR”被打印出来),我作为指针传递的错误变量在完成块内始终为零 我做错了什么?谢谢 override func viewDidLoad() { super.viewDidLoad() var error: NSError? // THIS IS ACTUALLY IN ANOTHER CLAS

我正试图实现苹果Swift文档()中“错误报告”部分所述的错误处理,但我肯定遗漏了什么

我有下面的代码(简化),即使网络请求明显失败(我与internet断开连接,并且“ERROR”被打印出来),我作为指针传递的错误变量在完成块内始终为零

我做错了什么?谢谢

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()        
}

解决方案

你会在苹果免费电子书《使用Swift与Cocoa和Objective-C》中找到一个关于Swift错误处理的清晰例子(第51页)

基本上,您希望查看错误的内存地址,然后测试该值以处理错误。尝试从中推断并重写代码以获得有效的结果

此外,如果必须使用NSErrorPointer,请参见以下内容

var writeError: NSError?
let written = myString.writeToFile(path, atomically: false,
    encoding: NSUTF8StringEncoding,
    error: &writeError)
if !written {
    if let error = writeError {
        println("write failure: \(error.localizedDescription)")
    }
}

Excerpt From: Apple Inc. “Using Swift with Cocoa and Objective-C.” iBooks. https://itun.es/us/1u3-0.l