【发布时间】:2018-08-22 03:18:58
【问题描述】:
我正在尝试将字符串转换为枚举键值,但找不到任何简单的方法,因此我对其进行了硬编码,但它仍然无法正常工作。
我尝试使用枚举函数从字符串中返回枚举键值,但我无法使用字符串调用它,即使我使用字符串作为参数声明它。
然后我试图将它移到另一个班级,但同样的事情发生了。
我的相关代码如下。
enum pickedColor: String {
case green = "71D25E"
case red = "FF0000"
case maroon = "800000"
case yellow = "FFFF00"
case olive = "808000"
case lime = "00FF00"
case aqua = "00FFFF"
case teal = "008080"
case blue = "0000FF"
case navy = "000080"
case fuchsia = "FF00FF"
case purple = "800080"
func toEnum(_ colorName: String) -> pickedColor {
if colorName.elementsEqual("green") {
return .green
} else if colorName.elementsEqual("red") {
return .red
} else if colorName.elementsEqual("maroon") {
return .maroon
} else if colorName.elementsEqual("yellow") {
return .yellow
} else if colorName.elementsEqual("olive") {
return .olive
} else if colorName.elementsEqual("lime") {
return .lime
} else if colorName.elementsEqual("aqua") {
return .aqua
} else if colorName.elementsEqual("teal") {
return .teal
} else if colorName.elementsEqual("blue") {
return .blue
} else if colorName.elementsEqual("navy") {
return .navy
} else if colorName.elementsEqual("fuchsia") {
return .fuchsia
} else {
return .purple
}
}
{
当我尝试调用它时显示的代码是 this.Picture1
手动完成时,仍然显示cannot convert string to pickColor的错误。
然后我将代码移到了一个新类中,但是它仍然不起作用。
class Color {
func toEnum(_ colorName: String) -> pickedColor {
if colorName.elementsEqual("green") {
return .green
} else if colorName.elementsEqual("red") {
return .red
} else if colorName.elementsEqual("maroon") {
return .maroon
} else if colorName.elementsEqual("yellow") {
return .yellow
} else if colorName.elementsEqual("olive") {
return .olive
} else if colorName.elementsEqual("lime") {
return .lime
} else if colorName.elementsEqual("aqua") {
return .aqua
} else if colorName.elementsEqual("teal") {
return .teal
} else if colorName.elementsEqual("blue") {
return .blue
} else if colorName.elementsEqual("navy") {
return .navy
} else if colorName.elementsEqual("fuchsia") {
return .fuchsia
} else {
return .purple
}
}
}
错误参数的第二张图在这里。 Picture2
发生了什么事?
【问题讨论】:
-
你应该使用
switch而不是if/else-if/else阶梯
标签: ios swift xcode parameters enums