Условие .failed (let e) из результата возвращает список пользовательских исключений в перечислении SDKError.На стороне пользовательского интерфейса я должен реализовать логику для различных типов сбоев.Как можно определить тип ошибки по объекту?
case .failed (пусть e as! SDKError):
case .failed (let e): e.localizedDescription
// UI side implementation
SDK.getInstance.fetchItems() { (result) in
switch result {
case .success(let item):
self.item = item
case .failed(let e):
print("Error=\(e)")
}
}
// SDK part
// Type of response from the closure
public enum ResultModel<T, E> {
case success(T)
case failed(E)
var isSuccess: Bool {
if case .success(_) = self {
return true
}
return false
}
var isFailed: Bool {
if case .failed(_) = self {
return true
}
return false
}
}
// SDK part
// Enum class for different exceptions
public enum SDKError: Error {
case UnacceptableStatusCode(Int)
case UnexpectedResponse(Any)
case InvalidAuthCredentials(Any)
case InvalidData(Any)
case MandatoryPasswordReset(Any)
case NullDataFound(Any)
case NullResponse(Any)
}