Swift中枚举的反射

3

假设我有以下这个枚举:

enum Direction {
  case Left
  case Right
}

有没有一种自动派生枚举字符串描述的方法,而不需要自己定义?就像这样:
let direction: Direction = .Left
let description: String = direction.description // should be "Left"

我尝试使用reflect(direction)MirrorType上的属性,但这并没有起作用。

2个回答

2

我认为最接近的方法要么是自己实现描述,要么将枚举转化为字符串:

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

你可以通过direction.rawValue获取该值。显然,这并不是你要寻找的最好方法,而且需要复制枚举值,这很愚蠢。
如果需要的话,您可以使用原始值来实现描述(允许您使用 direction.description :
var description: String {
    return self.rawValue
}

2

目前不可以。您需要手动实现一个description函数来完成这个任务。Swift的反射功能非常有限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接