测试基于枚举的变量是否*不*等于具有关联值的特定情况的最简单方法是什么?

What is the easiest way to test if an enum-based variable is *not* equal to a specific case with an associated value?

我们有以下枚举和变量

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
}

那么测试这种情况的最简单方法是什么?

试试看:

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
}