Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Switch Case handling two different scenarios

Tags:

swift

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
  }
like image 493
casillas Avatar asked Nov 27 '25 07:11

casillas


1 Answers

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
}
like image 128
OOPer Avatar answered Nov 29 '25 06:11

OOPer



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!