I have the following implementation where potentially I could able to get two different error types as CustomError and ClassError.
However if I receive a ClassError, it goes into switch statement of CustomError's default case. I am wondering how to handle this scenario.
switch completion {
case .failure (let error):
switch error as? CustomError {
case .cFailed:
// show alert here
case .nFailed:
// show alert here
default:
// show alert here
}
switch error as? ClassError {
case .gFailed:
// show alert here
default:
// show alert here
}
return
}
You can write a properly nested switch like this:
switch completion {
case .failure(let error as CustomError):
switch error {
case .cFailed:
// show alert here
break
case .nFailed:
// show alert here
break
default:
// show alert here
break
}
case .failure(let error as ClassError):
switch error {
case .gFailed:
print("ClassError.gFailed")
default:
// show alert here
break
}
default:
break
}
Or else, you can write a single level switch:
switch completion {
case .failure(CustomError.cFailed):
//...
break
case .failure(CustomError.nFailed):
//...
break
case .failure(ClassError.gFailed):
print("ClassError.gFailed")
default:
break
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With