I\'ve got two enums:
public enum ServerState {
case Connecting
case Open
case LoggedIn
case Closed
case Error(NSError)
}
enum TransportLayerState
One possible answer I found was to make TransportLayerState equatable. In that case I could do this:
switch serverState {
case .Connecting where tlState != .Connecting: return false
case .Closed where tlState != .Disconnected(nil): return false
case let .Error(err) where tlState != .Diconnected(err): return false
...
default: return true
}
I do end up having to write a bit of code in TransportLayerState enum to make it equatable, so not sure if it's worth the effort, but it does work.