Какой самый простой способ проверить, является ли переменная на основе перечисления * не * равной конкретному случаю со связанным значением?

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

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 ответ

Решение

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

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
}
Другие вопросы по тегам