【问题标题】:Reflection of enum in Swift [duplicate]Swift中枚举的反射[重复]
【发布时间】:2015-04-17 20:08:01
【问题描述】:

假设我有一个这样的枚举:

enum Direction {
  case Left
  case Right
}

有没有一种方法可以自动导出枚举的字符串描述而无需自己定义?像这样的:

let direction: Direction = .Left
let description: String = direction.description // should be "Left"

我尝试了reflect( direction)MirrorType 上的属性,但没有奏效。

【问题讨论】:

    标签: swift


    【解决方案1】:

    目前没有。为此,您需要手动实现 description 函数。 Swift 的反射非常有限。

    【讨论】:

      【解决方案2】:

      我认为您可以做的最接近的方法是自己实现描述或将枚举设为字符串:

      enum Direction: String {
        case Left = "Left"
        case Right = "Right"
      }
      

      然后您可以通过direction.rawValue 获取值。显然,它不如您要寻找的那么好,而且它需要复制枚举值,这很愚蠢。

      然后你可以根据需要使用原始值来实现描述(允许你使用direction.description:

      var description: String {
          return self.rawValue
      }
      

      【讨论】:

        猜你喜欢
        • 2016-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-26
        • 2014-07-17
        • 2011-06-12
        • 1970-01-01
        • 2021-08-09
        相关资源
        最近更新 更多