我enum在Swift中有一个问题.我宣布我的枚举是这样的:
enum FirstEnum : CustomStringConvertible {
case VALUE1
case VALUE2
case VALUE3
var description: String {
switch self {
case .VALUE1:
return "First value"
case .VALUE2:
return "Second value"
case .VALUE3:
return "Third value"
}
}
func getFromCode(value:String) -> FirstEnum? {
switch value {
case "v1":
return FirstEnum.VALUE1
case "v2":
return FirstEnum.VALUE2
case "v3" :
return FirstEnum.VALUE3
}
}
Run Code Online (Sandbox Code Playgroud)
我需要从字符串(如字典)获取枚举,所以我希望这行应该工作:
let foo = FirstEnum.getFromCode("v1")
Run Code Online (Sandbox Code Playgroud)
但是XCode(7)期望FirstEnum方法的参数getFromCode改为String方法定义中声明的参数,说:
无法将"String"类型的值转换为预期的参数类型"FirstEnum"
为什么这样?......我做错了什么?
您可以使用可用的初始化程序根据一个或多个参数选择适当的枚举成员.如果提供的参数与适当的枚举成员不匹配,则初始化程序可能会失败.
下面的示例定义了一个名为TemperatureUnit的枚举,它有三种可能的状态(开尔文,摄氏和华氏).可用的初始值设定项用于为表示温度符号的Character值查找适当的枚举成员:
enum TemperatureUnit {
case Kelvin, Celsius, Fahrenheit
init?(symbol: Character) {
switch symbol {
case "K":
self = .Kelvin
case "C":
self = .Celsius
case "F":
self = .Fahrenheit
default:
return nil
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
921 次 |
| 最近记录: |