快速获取枚举类型的值

时间:2019-03-05 21:35:51

标签: swift

我正在尝试获取枚举的默认值,以便可以将其用作参数。这段代码无法正常工作,但我想得到以下内容:

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)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

来自Swift Book - Enumerations

  

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

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

尽管可以,但是我将枚举用作形式参数的类型,以使某人无法将无效值传递给该函数。我还假设您将一个枚举嵌套在原本为空的枚举中是有原因的...