当前位置: 首页 > 面试题库 >

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

羊舌涵涤
2023-03-14
问题内容

我试图从原始值获取枚举类型:

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

任何建议如何获得它?


问题答案:

太复杂了,只需将原始值直接分配给案例

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+中,所有枚举都是 lowercased



 类似资料:
  • 问题内容: 如果我有一个带有原始值的枚举: 如何将值转换为字符串?语言中是否可用这种类型名称自省? 类似的东西(此代码将不起作用): 问题答案: 从Xcode 7 beta 5(Swift版本2)开始,您现在可以默认使用来打印类型名称和枚举大小写,或者使用的初始值设定项或字符串插值语法转换为。因此,对于您的示例: 因此,不再需要定义和维护一个方便函数,该函数在每种情况下都可以打开以返回字符串文字。

  • 问题内容: 我有一个枚举,看起来像: 我有一个看起来像的测试班 输出为: 代替 我不确定这里出什么问题了吗?? 问题答案: 您需要 重写枚举的方法:

  • 假设我有以下代码: 是否有一种方法可以得到下面的数组?

  • 问题内容: 我在Java中有一个枚举: 我想按索引访问枚举值,例如 我该怎么办? 问题答案: 试试这个

  • 问题内容: 说我有一个枚举 并且我想找到一个字符串的枚举值,例如它将是。这怎么可能呢? 是我需要的方法吗?如果是这样,我将如何使用它? 问题答案: 是的,会给你的。 请注意,该名称必须是精确匹配,包括大小写:与两抛出。 静态方法和是在编译时创建的,不会出现在源代码中。但是,它们确实出现在中。例如,显示两种方法。

  • 问题内容: 有没有办法从获取原始/原始JSON值? 问题: 现在是,但是我需要原始字符串。 有没有办法获得这个原始价值?另外,我无法更改创建方式(例如更改设置),因为它作为参数传递给我的课程… (参考:原始的NJsonSchema问题) 问题答案: 您无法获取原始字符串,无法识别日期字符串并将其转换为自身内部的结构。如果您这样做,则可以看到以下内容: 但是,您可以通过执行以下操作以ISO 8601