我有一些枚举,用于定义模型上特定属性的值(不会在整个代码中散布这些字符串)。由于模型存储在领域中,它们不能是这种枚举类型,而是字符串。
enum看起来像这样:
public enum SomeType: String {
case one
case two
case three
}
目前我做这样的比较:
model.field == SomeType.one.rawvalue
虽然这确实有效,但我希望不必每次都添加raw value
。所以我希望能够写下这个:
model.field == SomeType.one
有了这个,swift抱怨说它无法在类型==
和String
上使用运算符SomeType
。我已经尝试在SomeType
枚举上添加一个自定义运算符,允许与String
进行比较,但是swift似乎没有实际使用它并仍然给出相同的错误。是否有可能实现我想要的,或者出于某种原因迅速禁止它?
答案 0 :(得分:6)
使用运算符重载:
public enum SomeType: String {
case one = "1"
case two = "2"
case three = "3"
}
public func ==(left: SomeType, right: String) -> Bool {
return left.rawValue == right
}
public func ==(left: String, right: SomeType) -> Bool {
return right == left.rawValue
}