【发布时间】:2018-07-22 11:06:11
【问题描述】:
我正在尝试将多个协议与枚举中的单个协议保持一致。如果我单独输入它们,它会起作用。但是,如果我尝试将它们组合在一个协议中,它就不起作用。
我有以下枚举
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 的新协议
【问题讨论】:
标签: swift swift-protocols swift4.2