在不使用原始值的情况下将swift枚举与字符串进行比较
我使用枚举来定义模型上特定属性可以具有哪些值(而不会在代码中乱丢这些字符串)。由于模型存储在领域中,因此它们不能是此枚举类型,而是字符串 枚举如下所示:在不使用原始值的情况下将swift枚举与字符串进行比较,swift,Swift,我使用枚举来定义模型上特定属性可以具有哪些值(而不会在代码中乱丢这些字符串)。由于模型存储在领域中,因此它们不能是此枚举类型,而是字符串 枚举如下所示: public enum SomeType: String { case one case two case three } 目前我做的比较如下: public enum SomeType: String { case one case two case three } model.field=
public enum SomeType: String {
case one
case two
case three
}
目前我做的比较如下:
public enum SomeType: String {
case one
case two
case three
}
model.field==SomeType.one.rawvalue
虽然这确实有效,但我希望不必每次都添加原始值。因此,我希望能够写出以下内容:
model.field==SomeType.one
因此,swift抱怨它不能在类型字符串和SomeType
上使用运算符=
。我已经尝试在SomeType
enum上添加一个自定义运算符,它允许与String
进行比较,但是swift似乎没有实际使用它,仍然会给出相同的错误。是否有可能实现我想要的,或者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
}
使用运算符重载:
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
}
基本但精彩!基本但精彩!