为什么我不能在Swift 3中打印枚举的案例名称?

时间:2017-02-28 15:20:59

标签: swift charts

我在Swift 3中有一个枚举,我可以使用以下代码打印它的名字:

枚举定义

public enum Foo : Int {
    case F1
}

以下代码将在控制台中获得F1

print(Foo.F1)

但是当我尝试打印Charts

中定义的枚举时

我只能在控制台

中获得HorizontalAlignment
print(Legend.HorizontalAlignment.center)

为什么?

1 个答案:

答案 0 :(得分:4)

因为枚举声明为@objc。在Legend.swift

@objc(ChartLegendHorizontalAlignment)
public enum HorizontalAlignment: Int
{
    case left
    case center
    case right
}

亲自尝试,在@objc枚举前添加Foo,您会看到Foo已打印出来。虽然我不确定为什么会发生这种情况,但很可能是因为@objc更改了枚举的调试描述,因为Objective-C枚举只是一系列没有附加任何元数据的整数。 @objc枚举打印其类型,而Swift枚举打印其大小写。

相关讨论:Why does an @objc enum have a different debug description than a pure Swift enum?