我有一些枚举,用于定义我的模型上的特定属性可以具有的值(没有在整个代码中散布这些字符串).由于模型存储在领域中,因此它们不能是此枚举类型,而是字符串.
枚举看起来像这样:
public enum SomeType: String {
case one
case two
case three
}
Run Code Online (Sandbox Code Playgroud)
目前我做这样的比较:
model.field == SomeType.one.rawvalue
虽然这确实有效,但我宁愿不必raw value每次都添加.所以相反,我想能够写这个:
model.field == SomeType.one
有了这个,迅速抱怨说,它不能使用操作==的类型String和SomeType.我已经尝试在SomeType枚举上添加一个自定义运算符,允许进行比较String,但是swift似乎没有实际使用它并仍然给出相同的错误.是否有可能实现我想要的或者由于某种原因迅速禁止它?
使用运算符重载:
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
393 次 |
| 最近记录: |