在Swift 2中,你可以用字符串创建一个枚举吗?
enum Food : Int { case Pizza, Pancakes }
let str = "Pizza"
let food = Food(name:str) // for example
最后一行不起作用,但我正在寻找类似的东西。与Java一样,您可以说Food.valueOf("Pizza")
。
修改:我无法使用字符串作为原始值。
答案 0 :(得分:5)
您可以为枚举创建一个初始化程序,以language: go
script: make VERSION=$TRAVIS_TAG
go:
- 1.4.1
deploy:
provider: releases
api_key:
secure: reallylongsecurestring
file: releasebin
skip_cleanup: true
on:
tags: true
作为参数。从那里,您切换字符串以将self的值设置为特定情况,如下所示:
String
答案 1 :(得分:2)
不要有编译器检查细节,但是:
enum Food { case Pizza="Pizza", Pancakes="Pancakes" }
let str = "Pizza"
let food = Food(rawValue:str)
答案 2 :(得分:1)
您可以设置原始值为字符串的枚举,然后通过指定原始值来创建枚举。这与您的要求非常接近。
答案 3 :(得分:1)
Ian的答案很棒,但根据您的需要,您可能更喜欢带有可用初始化程序的枚举:
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)