swift - 不允许使用字符串常量 NSLinguisticTagNoun 的枚举

标签 swift enums

试图用字符串常量定义一个枚举但得到编译错误:

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/

相关文章:

objective-c - 如何从 Objective-C 访问 Swift 中的枚举?

ios - pushViewController 需要一些时间

grails - 在 Grails 域类中使用 ENUM

ios - UITableView里面UITableViewCell高度问题

SwiftUI 从列表中向上传递 View 层次结构的数据

ios - 无法将 Snapkit 导入 KeyboardViewController

c++ - 为什么只能在 C++ 类中初始化整数或枚举类型?

c# - 如何将 EnumConverter 与 CsvHelper 一起使用

java - @AllArgsConstructor 不在 Enum 上生成构造函数

java - 用于搜索小写枚举常量的正则表达式