Какой самый простой способ проверить, является ли переменная на основе перечисления * не * равной конкретному случаю со связанным значением? - PullRequest
0 голосов
/ 30 апреля 2018

У нас есть следующие enum и переменная

enum DisplayState{
    case loading
    case loaded(ViewModel)
    case noResults
    case error
}

var displayState:DisplayState = .loading

Мы хотим проверить, не находимся ли мы в каком-либо другом состоянии, кроме loaded.

Так как есть связанное значение, это, конечно, не работает ...

if displayState != .loaded {
    // Do something
}

Но я надеюсь найти что-то еще, кроме одного из них ...

switch displayState{
    case .loaded: break
    default: // Do something
}

или

if case .loaded = displayState {} else {
    // Do something
}

Так, каков самый простой способ проверить это дело?

1 Ответ

0 голосов
/ 01 мая 2018

Попробуйте это:

enum DisplayState {
    case loading
    case loaded(ViewModel)
    case noResults
    case error

    var isLoaded: Bool {
        switch self {
        case .loaded:
            return true
        default:
            return false
        }
    }
}

var displayState: DisplayState = .loading

if displayState.isLoaded {
    // code
}
...