斯威夫特中枚举的反思

时间:2015-04-17 20:08:02

标签: swift

说我有这样的枚举:

enum Direction {
  case Left
  case Right
}

有没有办法自动派生枚举的字符串描述而不自己定义?像这样:

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

我尝试了reflect( direction)MirrorType上的属性,但这不起作用。

2 个答案:

答案 0 :(得分:2)

目前不是。您需要手动为此实现description功能。斯威夫特的反思非常有限。

答案 1 :(得分:2)

我认为你能做的最接近的是自己实现描述或者将枚举变为字符串:

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

然后,您可以通过direction.rawValue获取值。显然,没有你想要的那么好,它需要复制枚举值,这是愚蠢的。

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

var description: String {
    return self.rawValue
}