6
考虑两个斯威夫特枚举:为什么@objc枚举与纯粹的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
枚举的情况下打印枚举名字,在打印纯斯威夫特枚举的case
打印的实际case
名字?添加@objc
是否更改枚举的调试描述?
Swift枚举携带比ObjC更多的元数据(case标签)。 ObjC枚举只是一系列的int,并没有真正了解它们所代表的案例标签。你可以通过打开枚举来解决它,并返回不同的字符串:http://stackoverflow.com/a/14651888/3141234 – Alexander
@Alexander非常感谢你!这终于对我产生了某种意义。我以为我疯了,因为我见过的所有帖子都表明,在Swift中打印枚举会显示案例,尽管我清楚地看到了一个不是这种情况的例子(CBCentralManagerState)。谢谢! – vegather