【问题标题】:Get value of enum type in swift快速获取枚举类型的值
【发布时间】:2019-03-05 21:35:51
【问题描述】:

我正在尝试获取枚举的默认值,以便可以将其用作参数。这段代码不起作用,但我想得到类似的东西:

print("Param: \(Params.RCLoss.description)")

输出应该是:

Param: RC_LOSS_MAN

代码如下:

enum Params {
  enum RCLoss: Int32, CustomStringConvertible {
    case disable = 0
    case enable = 1

    var description: String {
        return "RC_LOSS_MAN"
    }
  } 
}

我希望能够通过这个:

set(parameterType: Params.RCLoss.description, parameterValue: Params.RCLoss.enable)

应该对应于正在设置的这些值:

set(parameterType: "RC_LOSS_MAN", parameterValue: 0)

【问题讨论】:

标签: swift


【解决方案1】:

看来你只是想要

enum rcLoss: Int32 {
  case disable = 0
  case enable = 1 

  static var description: String {
    return "RC_LOSS_MAN"
  }
}

rcLoss 是一个类型,description 必须是static 才能调用rcLoss.description。这意味着你不能使用CustomStringConvertible。您可以使用CustomStringConvertible枚举值 转换为String

【讨论】:

  • 就是这样!非常感谢!
【解决方案2】:

来自Swift Book - Enumerations

您可以使用其 rawValue 属性访问枚举案例的原始值。

set(parameterType: Params.rcLoss.description, parameterValue: Params.rcLoss.enable.rawValue)

如果可以的话,我会使用枚举作为形式参数的类型,这样就不会有人将无效值传递给该函数。另外我假设您将枚举嵌套在一个空的枚举中是有原因的......

【讨论】:

  • 鉴于名称“Params”,我怀疑他们将外部枚举用作poor man's namespace(还有其他与问题无关的属性)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 2017-01-14
  • 2014-07-24
  • 1970-01-01
  • 2023-03-15
  • 2014-11-10
  • 2019-11-03
相关资源
最近更新 更多