Это хорошее исправление, но я собираюсь пойти с ответом xxtesaxx, так как это проще.

от вопрос уже есть ответ здесь:

Как сравнить enum со связанными значениями, игнорируя его связанное значение в Swift? 4 ответаОшибка компилятора при сравнении значений типа enum с соответствующими значениями? 2 ответа

язык: Swift2.3

Например, давайте я покажу вам различные виды перечислений

enum Normal {
    case one
    case two, three
}

enum NormalRaw: Int {
    case one
    case two, three
}

enum NormalArg {
    case one(Int)
    case two, three
}   

Switch может использоваться со всеми тремя перечислениями следующим образом:

var normal: Normal = .one
var normalRaw: NormalRaw = .one
var normalArg: NormalArg = .one(1)

switch normal {
    case .one: print("1")
    default: break
}

switch normalRaw {
    case .one: print(normalRaw.rawValue)
    default: break
}

switch normalArg {
    case .one(let value): print(value)
    default: break
}

В операторе if-else я могу сравнивать толькоNormal а такжеNormalRawи сообщение об ошибке показывает дляNormalArgпоэтому я не могу запустить код

Бинарный оператор '==' нельзя применять к операндам типаNormalArg а также_

Вот пример кода:

if normal == .two { // no issue
    .. do something
}

if normalRaw == .two { // no issue
    .. do something
}

if normalArg == .two { // error here (the above message)
    .. do something
}

if normalArg == .one(_) { // error here (the above message)
    .. do something
}

if normalArg == .three { // error here (the above message)
    .. do something
}

Есть идеи? Я ничего не делаю с этим кодом, мне просто интересно, почему мы не можем сделать сравнение.

Ответы на вопрос(2)

Ваш ответ на вопрос