如何在Swift语言中传递错误指针?

Ape*_*lus 55 swift

我试图在swift中传递一个错误指针,但我无法这样做.编译器抱怨"NSError不能转换为'NSErrorPointer'".

var error: NSError = NSError()
var results = context.executeFetchRequest(request, error: error)

if(error != nil)
{
    println("Error executing request for entity \(entity)")
}
Run Code Online (Sandbox Code Playgroud)

Jia*_*aro 99

你只需传递一个引用:

var error: NSError?
var results = context.executeFetchRequest(request, error: &error)

if error != nil {
    println("Error executing request for entity \(entity)")
}
Run Code Online (Sandbox Code Playgroud)

这里有两个要点:

  1. NSError?是可选的(并初始化为nil)
  2. 你通过引用传递使用&运算符(例如&error)

请参阅:使用swift与cocoa和objective-c


pxp*_*ics 10

这个建议值得讨论,但有些工程师更喜欢使用黄金路径语法:

var maybeError: NSError?
if let results = context.executeFetchRequest(request, error: &maybeError) {
    // Work with results
} else if let error = maybeError {
    // Handle the error
}
Run Code Online (Sandbox Code Playgroud)