爲了編寫一個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