gpt4 book ai didi

ios - 枚举大小写的原始值必须是字符串的文字错误

转载 作者:行者123 更新时间:2023-11-30 11:44:25 26 4
gpt4 key购买 nike

我想使用相同的结构从不同的 API 中获取,因为我需要能够根据需要获取的内容更改 enum 字符串,如下所示:

static var menuSelection: String = ""

if ... {
menuSelection = "1"
} else if ... {
menuSelection = "2"
} else {
menuSelection = "3"
}

struct Order : Decodable {
private enum CodingKeys : String, CodingKey { case raw = "RAW" }
let raw : MenuRAW
}

struct MenuRAW : Decodable {
private enum CodingKeys : String, CodingKey { case menu = "\(menuSelection)" } // <---- raw value for enum case must be a literal
let menu : MenuReference
}

struct MenuReference : Decodable {
private enum CodingKeys : String, CodingKey {
case usd = "USD"
case eur = "EUR"
case gbp = "GBP"
case cny = "CNY"
case rub = "RUB"
}
let usd : MenuUSD?
let eur : MenuEUR?
let gbp : MenuGBP?
let cny : MenuCNY?
let rub : MenuRUB?
}

但是我得到一个枚举大小写的原始值必须是文字,因为“\(menuSelection)”似乎不是文字。我的解决方案是什么?

最佳答案

你可以用不同的方式来做到这一点,使用参数创建枚举

enum CodingKeys {
case menu(menuSelection: String)

var stringValue: String? {
switch self {
case let .menu(menuSelection):
return menuSelection
default:
return nil
}
}
}

现在你可以像这样使用stringValue而不是rawValue

CodingKeys.menu(menuSelection: "您参数").stringValue

关于ios - 枚举大小写的原始值必须是字符串的文字错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48989574/

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