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

сделает.