У меня есть следующее перечисление
enum MoneyCupUsersBackEndRouter: URLRequestConvertible {
case getInfo
case postUserConnection(ConnectionData)
case postPersonalInfo(UserUpdatePersonalInformationsRequest)
case postKycAnswers(QuestionnaireAnswers)
switch self {
case .postUserConnection(let parameters):
let r = parameters.encode()
print(r)
case .postPersonalInfo(let parameters):
let r = parameters.encode()
print(r)
case .postKycAnswers(let parameters):
let r = parameters.encode()
print(r)
default:
break
}
Этот код довольно уродливый, мне приходилось дублировать регистры в коммутаторе, поскольку каждый раз параметры различного типа.Но все параметры следуют протоколу Codable.
Должен быть способ избежать этого, используя некие универсальные типы.
Все функции кодирования объявлены так, как показано ниже:
func encode() -> [String: Any] {
return ["id": id, "data": data]
}
Возвращенный словарь содержит структурированные поля.