gpt4 book ai didi

ios - Swift:作为 NSErrorPointer 传递的 NSError 始终为 nil

转载 作者:可可西里 更新时间:2023-11-01 02:27:20 25 4
gpt4 key购买 nike

我正在尝试按照 Apple 的 Swift 文档 (https://developer.apple.com/library/mac/documentation/swift/conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html) 的“错误报告”部分中的说明实现错误处理,但我一定遗漏了一些东西。

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

我做错了什么?谢谢!

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

最佳答案

解决方案

您可以在 Apple 的免费电子书 Using Swift with Cocoa and Objective-C(第 51 页)中找到 Swift 错误处理的清晰示例。

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

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

此外,如果您必须使用 NSErrorPointer,请参阅以下内容 SO question and answer .

关于ios - Swift:作为 NSErrorPointer 传递的 NSError 始终为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com