Siesta Swift: RequestError.Cause.RequestCancelled не соответствует _ErrorCodeProtocol
Я пытаюсь проверить, какую именно ошибку может выдать запрос, выполнив некоторые пользовательские проверки и выдав свои собственные пользовательские ошибки.
if let cause = resource.latestError?.cause {
if case RequestError.Cause.RequestCancelled = cause {
}
}
Я получаю эту ошибку:
Тип аргумента 'RequestError.Cause.RequestCancelled.Type' не соответствует ожидаемому типу '_ErrorCodeProtocol'
Любые идеи, как я мог бы проверить, какова точная причина ошибки, а затем вернуть мои собственные ошибки?
1 ответ
Причины ошибок Сиесты открыты для расширения и, следовательно, не для перечисления, поэтому if case
Синтаксис не работает с ними. (Ошибка компилятора в том, что Swift думает, что вы пытаетесь использовать case
извлечь код ошибки из ошибки, в которой ее нет.)
Причины ошибок Сиесты - это дерево разных типов. Вместо того, чтобы использовать if case
, соответствие ошибки вызывает с помощью is
:
if let cause = resource.latestError?.cause {
if cause is RequestError.Cause.RequestCancelled {
}
}
... или просто:
if resource.latestError?.cause is RequestError.Cause.RequestCancelled {
}
... или если вам нужно присвоить ошибку суженного типа переменной, чтобы вы могли сделать с ней что-то еще:
if let cause = resource.latestError?.cause as? RequestError.Cause.RequestCancelled {
}