1. ホーム
  2. ios

[解決済み] Swiftでraw値からenumを取得する方法は?

2023-04-22 02:09:06

質問

生の値からenumの型を取得しようとしています。

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+ では、すべての enum のケースは lowercased