Какой самый простой способ проверить, является ли переменная на основе перечисления * не * равной конкретному случаю со связанным значением?
У нас есть следующее перечисление и переменная
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
}