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

为什么我不能打印枚举';Swift 3中的案例名称?,swift,charts,Swift,Charts,我在Swift 3中有一个枚举,我可以使用以下代码打印其名称: 枚举定义 public enum Foo : Int { case F1 } 以下代码将在控制台中获取F1 print(Foo.F1) print(Legend.HorizontalAlignment.center) 但当我尝试打印中定义的枚举时 我只能在控制台中获取水平对齐 print(Foo.F1) print(Legend.HorizontalAlignment.center) 为什么会这样?因为枚举被声明为

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

枚举定义

public enum Foo : Int {
    case F1
}
以下代码将在控制台中获取
F1

print(Foo.F1)
print(Legend.HorizontalAlignment.center)
但当我尝试打印中定义的枚举时

我只能在控制台中获取
水平对齐

print(Foo.F1)
print(Legend.HorizontalAlignment.center)

为什么会这样?

因为枚举被声明为
@objc
。在:

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


相关讨论:

如果我想在控制台中获得
center
,我应该怎么做?我正在用react native包装图表。它有很多枚举,所以我需要一些工厂方法来将js字符串映射到中的枚举swift@XuDongWu你真的没有选择的余地,除非你想自己动手改变这个类。有没有官方文件说明@objc为什么会导致这个结果?我不熟悉斯威夫特&oc@XuDongWu据我所知,我在这里问了一个后续问题: