我正在尝试使多个协议与枚举中的单个协议一致。如果我单独输入它们,它就可以工作。但是,如果我尝试将它们组合在一个协议中,它就不起作用。
我有以下枚举
enum Theme:Int,CaseIterable,CustomStringConvertible {
case light
case dark
var description: String {
switch self {
case .light:
return "Light Theme"
case .dark:
return "Dark Theme"
}
}
var backgroundColor: Color {
switch self {
case .light:
return .white
case .dark:
return .black
}
}
}
我试图通过这个将它的一致性转换为协议
public protocol ThemeProvider where T.RawValue == Int {
associatedtype T:RawRepresentable,CaseIterable,CustomStringConvertible
}
并将枚举定义更改为enum Theme:ThemeProvider
但是它说“主题”不符合预期的类型“主题提供者”将协议添加到枚举的正确方法是什么?
PS:上面的代码是 Swift 4.2 并且使用了新的协议叫做CaseIterable