gpt4 book ai didi

ios - 带有字符串参数调用的 Swift 枚举函数,带有枚举类的参数

转载 作者:行者123 更新时间:2023-11-28 10:07:10 25 4
gpt4 key购买 nike

我正在尝试将字符串转换为枚举键值,但我找不到任何简单的方法,因此我对其进行了硬编码,但它仍然无法正常工作。

我尝试使用枚举函数从字符串返回枚举键值,但我无法使用字符串调用它,即使我使用字符串作为参数声明它。

然后我尝试将它移到另一个类,但同样的事情发生了。

我的相关代码如下。

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
}
}

{

当我尝试调用它时显示的代码是这样的。 Picture1

手动完成的时候还是报cannot convert string to pickedColor的错误。

然后我将代码移到一个新类中,但是它仍然不起作用。

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

这是怎么回事?

最佳答案

您需要使您的 toEnum 函数成为静态函数,因为您没有在特定的枚举实例上调用它。

您还应该以大写字母开头命名您的枚举。

switch 比长的 if/else 更好。我也会考虑处理未知颜色。

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"

static func toEnum(_ colorName: String) -> PickedColor? {
switch colorName {
case "green":
return .green
case "red":
return .red
case "maroon":
return .maroon
case "yellow":
return .yellow
case "olive":
return .olive
case "lime":
return .lime
case "aqua":
return .aqua
case "teal":
return .teal
case "blue":
return .blue
case "navy":
return .navy
case "fuchsia":
return .fuchsia
case "purple":
return .purple
default:
return nil
}
}
}

现在你可以像你尝试的那样调用它了:

if let color = PickedColor.toEnum(colorName) {
// use color as needed
}

关于ios - 带有字符串参数调用的 Swift 枚举函数,带有枚举类的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51959403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com