Как создать наследование для enum - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь создать наследство для перечисления ниже

enum BankAuthError: String {
    case authFailed = "AuthFailed"
    case technicalError = "Unavailable"
    case accountLocked = "Locked"
    case unknownError = "UnknownError"
    case userInteractionRequired = "UserInteractionNeeded"
    case realmUserAlreadyConnected = "UserExists"
}

Я могу использовать это перечисление, как показано ниже

let errorCode = BankAuthError(rawValue:errorMessageCodeString)

Теперь я пытаюсь создать наследование сверху структуры, как показано ниже

//MARK:- Enum to handle all sysnc errors
enum SyncErrorStatus: BankAuthError {
 case usernameOrPasswordMissing = "UsernameOrPasswordMissing"
 case signatureMissing = "SignatureMissing"
 case twoPhaseAuthentication = "TwoPhaseAuth"
}

Но если я делаю это, я получаю ошибку компилятора как

SyncErrorStatus объявляет необработанный тип «BankAuthError», но не соответствует RawRepresentable, и соответствие не может быть синтезировано

Пожалуйста, дайте мне знать, можем ли мы создать наследование сверху из перечисления Raw или нет.

1 Ответ

5 голосов
/ 02 апреля 2019

Перечисления являются типами значений, поэтому для перечислений не существует такой вещи, как наследование.Когда вы объявляете enum как enum YourEnum: Type, вы объявляете rawValue вашего enum типа Type.Тем не менее, Type должен соответствовать RawRepresentable.

То, что вы ищете, чтобы создать enum, который содержит все случаи другого перечисления, а также некоторые другие случаи, которые в настоящее время невозможны в Swift.Вы не можете наследовать все случаи перечисления.

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