gpt4 book ai didi

swift - 在不使用原始值的情况下将 swift 枚举与字符串进行比较

转载 作者:搜寻专家 更新时间:2023-11-01 05:55:04 27 4
gpt4 key购买 nike

我使用枚举来定义我的模型上的特定属性可以具有哪些值(而不是让这些字符串散落在整个代码中)。由于模型存储在领域中,因此它们不能是这种枚举类型,而是字符串。

一个枚举看起来像这样:

public enum SomeType: String {
case one
case two
case three
}

目前我是这样比较的:

model.field == SomeType.one.rawvalue

虽然这确实有效,但我宁愿不必每次都添加原始值。所以我希望能够这样写:

model.field == SomeType.one

有了这个,swift 提示它不能在类型 StringSomeType 上使用运算符 ==。我已经尝试在 SomeType 枚举上添加一个自定义运算符,它允许与 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
}

关于swift - 在不使用原始值的情况下将 swift 枚举与字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50834838/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com