1

Swift 2 では、文字列から列挙型を作成できますか?

enum Food : Int { case Pizza, Pancakes }
let str = "Pizza"
let food = Food(name:str)   // for example

最後の行は機能しませんが、そのようなものを探しています。Java のように、 と言うことができますFood.valueOf("Pizza")

編集:文字列を生の値として使用することはできません。

4

4 に答える 4

1

イアンの答えは素晴らしいですが、必要に応じて、失敗可能な初期化子を持つ列挙型を好むかもしれません:

enum Food: Int {

    case Pizza, Pancakes

    init?(name: String) {
        switch name {
        case "Pizza":       self = .Pizza
        case "Pancakes":    self = .Pancakes
        default:            return nil
        }
    }

}

let pizzaString = "Pizza"
let food = Food(name: pizzaString) // returns .Pizza (optional)
print(food?.rawValue) // returns 0 (optional)
于 2015-06-12T23:09:47.593 に答える