【发布时间】:2017-02-28 15:56:39
【问题描述】:
考虑两个 Swift 枚举:
enum Foo: Int {
case bar
}
@objc enum Baz: Int {
case qux
}
如果我要 print 这些枚举中的每个 case,我会期待相同的结果。相反,我看到了一些意想不到的东西:
print(Foo.bar) // "bar\n"
print(Baz.qux) // "Baz\n"
为什么打印 @objc 枚举的大小写会打印枚举名称,而打印纯 Swift 枚举的 case 会打印实际的 case 名称?添加@objc会改变枚举的调试描述吗?
【问题讨论】:
-
Swift 枚举比 ObjC 枚举携带更多元数据(案例标签)。 ObjC 枚举只是一系列 int,并不真正了解它们所代表的案例标签。您可以通过打开枚举并返回不同的字符串来解决它:stackoverflow.com/a/14651888/3141234
-
@Alexander 非常感谢!这对我来说终于有点道理了。我以为我快疯了,因为我看到的所有帖子都表明在 Swift 中打印枚举会显示这种情况,即使我清楚地看到了一个不是这种情况的示例(CBCentralManagerState)。谢谢!
-
如果调试器打印枚举案例的
rawValue而不是枚举的名称会更有用...