如何为枚举创建继承

时间:2019-04-02 09:40:28

标签: swift enums

我正在尝试为下面的枚举创建继承

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 个答案:

答案 0 :(得分:5)

枚举是值类型,因此没有像枚举那样的继承。在将enum声明为enum YourEnum: Type时,您将enum的rawValue声明为Type类型。但是,Type必须符合RawRepresentable

您要寻找的是创建一个enum,其中包含另一个枚举的所有情况,以及Swift中当前无法实现的其他一些情况。您不能继承枚举的所有情况。