Swift: регистр Enum не является членом типа 'String', чтобы использовать необработанное значение - PullRequest
0 голосов
/ 24 июня 2018

У меня есть строковое перечисление:

enum Country:String {
    case France
    case Germany
    case UnitedStates
}

Но в зависимости от восстановления UibuttonIdentifier я хочу что-то сделать.

У меня есть это ibaction:

@IBAction func countrySelection(_ sender: UIButton) {
    guard let selection:String = sender.restorationIdentifier else { return}
    switch selection {
    case Country.France:

    default:
        return
    }
}

НоЯ получаю эту ошибку в этой строке:

Enum case 'France' is not a member of type 'String'

строка кода:

case Country.France:

Я могу исправить изменение ошибкив этой строке:

case Country.France.rawValue

Но мой вопрос: зачем мне нужно или принудительно использовать необработанное значение?

Я буду очень признателен за вашу помощь.

1 Ответ

0 голосов
/ 24 июня 2018

Вы пытаетесь сравнить String со значением Country.Они не одного типа.Как вы заметили, вы можете изменить switch cases на String: Country.France.rawValue.

. Или вы можете преобразовать String в Country значение:

@IBAction func countrySelection(_ sender: UIButton) {
    guard let selection = sender.restorationIdentifier else { return }
    guard let country = Country(rawValue: selection)

    switch country {
    case .France:
        // handle France
    default:
        return
    }
}

Примечание: это не совсем то, для чего restoreIdentifier .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...