【发布时间】:2017-11-13 16:52:25
【问题描述】:
我将枚举定义为对协议 Eventable 的确认:
protocol Eventable {
var name: String { get }
static var all: [Eventable] { get }
}
enum MyEnum: String, Eventable {
case bla = "bla"
case blu = "blu"
var name: String {
return self.rawValue
}
static var all: [Eventable] {
return [
MyEnum.bla,
MyEnum.blu
]
}
}
我还有其他枚举,例如 MyEnum,其形式如下: 枚举 Bla:字符串,可事件 { }
我有两个问题:
对于具有字符串数据类型的枚举,我想避免重复生成变量名:
var name: String我不确定如何在 Swift 中编写它。我试图玩弄“where”子句,但没有成功。我怎样才能做到这一点?当我编写枚举并遵守该部分的协议时:
static var all: [Eventable] { get }。 我想要枚举 MyEnum,它将变量限制为:static var all: [MyEnum] { ... }因为现在我可以在返回的数组中放入任何作为 Eventable 的元素,这不是我需要的。 除其他外,我尝试在协议中为其定义一个通用约束,但出现以下错误:
Protocol 'Eventable' 只能用作通用约束,因为 它有 Self 或关联的类型要求
非常感谢您的帮助!
【问题讨论】: