AFError.responseValidationFailed where errorCode == "JOB_STARTED_TOO_EARLY": showTooEarlyErrorMessage() case is CLError: showLocationErrorMessage() default: showDefaultErrorMessage() } }
“message": "This booking is assigned to a different vehicle from the one currently in use. Use a correct vehicle to continue. “, “code” :"INVALID_VEHICLE" } }
AFError.responseValidationFailed where errorCode == "JOB_STARTED_TOO_EARLY": showTooEarlyErrorMessage() case is CLError: showLocationErrorMessage() default: showDefaultErrorMessage() } }
= "JOB_STARTED_TOO_EARLY" case invalidVehicle = "INVALID_VEHICLE" } enum StartJobError: Swift.Error { case locationTimeout case applicationError(ApplicationError) case serviceUnavailable }
.applicationError(.tooEarly): showTooEarlyErrorMessage() case .applicationError(.wrongVehicle): showSelectVehicleAlert() } } // checked for exhaustiveness // (all ApplicationError values have to be handled)
.applicationError(.tooEarly): showTooEarlyErrorMessage() case .applicationError(.wrongVehicle): showSelectVehicleAlert() case .serviceUnavailable: showDefaultErrorMessage() } } No “default” case
{ if case AFError.responseValidationFailed = error, let appError = ApplicationError(rawValue: code) { return .applicationError(appError) } if error is CLError { return .locationTimeout } // and so on... return .serviceUnavailable }