在不使用原始值的情况下将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
}

基本但精彩!基本但精彩!