ios - 如何从 Swift 中的原始值获取枚举?

标签 ios swift enums

我正在尝试从原始值中获取枚举类型:

enum TestEnum: String {
    case Name
    case Gender
    case Birth

    var rawValue: String {
        switch self {
        case .Name: return "Name"
        case .Gender: return "Gender"
        case .Birth: return "Birth Day"
        }
    }
}

let name = TestEnum(rawValue: "Name")       //Name
let gender = TestEnum(rawValue: "Gender")   //Gender

但似乎 rawValue 不适用于带空格的字符串:

let birth = TestEnum(rawValue: "Birth Day") //nil

有什么获取方法的建议吗?

最佳答案

太复杂了,直接把原始值赋值给case

enum TestEnum: String {
  case Name = "Name"
  case Gender = "Gender"
  case Birth = "Birth Day"
}

let name = TestEnum(rawValue: "Name")!       //Name
let gender = TestEnum(rawValue: "Gender")!   //Gender
let birth = TestEnum(rawValue: "Birth Day")! //Birth

如果案例名称与原始值匹配,您甚至可以省略它

enum TestEnum: String {
  case Name, Gender, Birth = "Birth Day"
}

在 Swift 3+ 中,所有枚举大小写都是小写

关于ios - 如何从 Swift 中的原始值获取枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36184795/

相关文章:

swift - 将日期组件(整数)转换为字符串

ruby-on-rails - Rails 枚举验证不起作用但引发 ArgumentError

ios - 向下拖动以关闭ViewController

javascript - 如何通过 Android 和 iOS 设备更改 Xtype 属性?

swift - 如何从 NSPasteboard 正确粘贴 NSImage?

swift - 如何让 IGListKit 在水平滚动的 UICollectionView 中分隔项目?

ios - Swift:从另一个 viewController 类访问枚举

java - 将 Map<Enum, Enum> 存储为字符串

objective-c - 在 iOS5 中使用 Twitter 框架提示登录警报?

ios - nil 导入带有电子邮件地址的联系人时验证失败