试图用字符串常量定义一个枚举但得到编译错误:
raw value for enum case must be a literal
enum WordTypes: String
{
case Noun = NSLinguisticTagNoun
case Verb = NSLinguisticTagVerb
}
但是 NSLinguisticTagNoun 是一个字符串“名词”?
最佳答案
错误消息指出原始值必须是字符串文字。这与字符串不同。字符串文字是在程序中直接指定的字符串(引号之间),而不是 String 类型的变量。请看下面的代码:
"abcdef" // A string literal
let myString: String = "abcdef" // A constant of type String initialized with a string literal
myString // Not a string literal
NSLinguisticTagNoun 和 NSLinguisticTagVerb 是字符串类型的常量,而不是字符串文字。枚举原始值必须是文字的要求是当前 Swift 版本的一个限制。要复制您想要的功能,您必须执行以下操作:
enum WordTypes: String
{
case Noun = "Noun"
case Verb = "Verb"
}
关于swift - 不允许使用字符串常量 NSLinguisticTagNoun 的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35185985/