如何从String创建枚举

Rob*_*b N 1 enums swift swift2

在Swift 2中,你可以用字符串创建一个枚举吗?

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

最后一行不起作用,但我正在寻找类似的东西.就像在Java中一样,你可以说Food.valueOf("Pizza").

编辑:我不能使用String作为原始值.

Ian*_*Ian 5

您可以为enum创建一个初始化程序,它将a String作为参数.从那里,您切换字符串以将self的值设置为特定情况,如下所示:

enum Food: Int {
    case None, Pizza, Pancakes


    init(string: String) {
        switch string {
        case "Pizza":
            self = .Pizza
        default:
            self = .None
        }
    }
}

let foo = Food(string: "") // .None
let bar = Food(string: "Pizza") // .Pizza
Run Code Online (Sandbox Code Playgroud)