Как передать указатель ошибки на языке 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)")
}
Здесь есть два важных момента:
-
NSError?
является необязательным (и инициализируется nil
) - вы передаете по ссылке с помощью оператора
&
(например, &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
}