4

我们有以下枚举和变量

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
}

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

4

1 回答 1

3

试试看:

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
}
于 2018-04-30T21:09:30.597 回答