I'd like to use the same struct to fetch from different APIs, for that I need to be able to change the enum
string depending on what I need to fetch as follows:
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?
}
But I get a raw value for enum case must be a literal
as "\(menuSelection)"
doesn't seem to be a literal. What is my solution here?