Как передать указатель ошибки на языке 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)")
}

Ответ 1

Вы просто передаете ссылку так:

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

if error != nil {
    println("Error executing request for entity \(entity)")
}

Здесь есть два важных момента:

  1. NSError? является необязательным (и инициализируется nil)
  2. вы передаете по ссылке с помощью оператора & (например, &error)

См.: Использование swift с cocoa и объектив-c

Ответ 2

Это предложение обсуждается, но некоторые инженеры предпочли бы использовать синтаксис "золотой путь":

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