我正在尝试为下面的枚举创建继承
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枚举创建继承。
答案 0 :(得分:5)
枚举是值类型,因此没有像枚举那样的继承。在将enum
声明为enum YourEnum: Type
时,您将enum
的rawValue声明为Type
类型。但是,Type
必须符合RawRepresentable
。
您要寻找的是创建一个enum
,其中包含另一个枚举的所有情况,以及Swift中当前无法实现的其他一些情况。您不能继承枚举的所有情况。