为了编写一个NSValueTransformer的通用代码,我需要能够检查一个枚举类型为String的例子。即:在Swift中,是否有一种确定枚举是否基于某种类型(例如字符串)的方法?
enum TestEnum: String {
case Tall
case Short
}
我特别感兴趣的是可以与guard语句一起使用的测试。以下几行是:
guard let e = myEnum as <string based enum test> else {
// throw an error
}
请注意并非所有的枚举都有原始值。例如:
enum Test2Enum {
case Fat
case Slim
}
因此,检查原始值类型不能单独用于此目的。
编辑
经过一番深入调查这已经很清楚,NSValueTransformer不能用于改造斯威夫特枚举。请参阅我在Matt的回答中的第二条评论。
取任何情况下的原始值,看看它是什么类型。 – matt
感谢马特,但不是所有枚举都有原始类型。例如。枚举Test2Enum {...}。因为它没有“继承”形式的类型,所以它没有原始值。 –
但是它不能成为RawRepresentable,这很容易找出 – matt