Может кто-нибудь сталкивался с подобным?
Есть энум с коммандами для REST API
enum Command: String {
case authorize, config, …
}
Есть функция, которая отправляет все запросы. Когда приходит ответ от сервера, я использую JSONDecoder().decode
, а в качестве первого аргумента (type: Decodable.Protocol
) хотел бы использовать структуру в зависимости от комманды. Для каждой комманды есть своя структура, например:
struct Authorize: Codable {
let accessToken: String
let expiration: Double
}
struct Config: Codable {
…
}
Хотелось бы в энуме прописать что-нибудь вроде этого
func JSONStruct() -> Decodable.Type {
switch self {
case .authorize: return Authorize.self
case …
}
}
И использовать вот так
//command: Command
let json = try JSONDecoder().decode(command.JSONStruct(), from: data)
Но если делать все как написано, то выходит ошибка Cannot invoke 'decode' with an argument list of type '(Decodable.Type, from: Data)'
Есть другие варианты?