Swift 2: неверное преобразование из функции бросания типа в функцию без бросания
У меня есть (уродливый) самозаписываемый код, перенесенный в Swift2, и получил это сообщение об ошибке в лямбда-функции:
![function with error]()
Я не понял, что я обрабатываю весь код с помощью функции throwing JSONObjectWithData и улавливаю ошибку. Я ничего не делаю в коде. Тем не менее, компилятор означает, что я делаю ошибку.
Мне нужно понять это поведение. Пожалуйста, будьте добры, потому что я знаю, что мне нужно улучшить свой код, чтобы в полной мере использовать новую концепцию обработки ошибок в swift2.
Спасибо вам заблаговременно.
Ответы
Ответ 1
Это было быстро. Я решил решить эту проблему с небольшой помощью этой статьи:
http://www.hackingwithswift.com/new-syntax-swift-2-error-handling-try-catch
вам нужно поставить общее предложение catch в конце кода, потому что уловка только NSError недостаточна.
catch let error as NSError
{
failure(error: error)
return
}
// this is important -->
catch
{
}
Ответ 2
Я думаю, что лучший путь вперед - изменить свою подпись функции отказа, чтобы принять ErrorType
. Тогда просто
catch let error {
failure(error: error)
}
сделает.