Я создаю приложение на основе RPC, поэтому входящие данные будут иметь общий формат
struct Message: Content {
let function: String
let parameters: ParameterValues
}
Если у меня много разных типов сообщений, для которых ParameterValues различается, как мне определитькакое сообщение было отправлено, чтобы я мог его расшифровать?Я думаю, что мне нужно какое-то дерево if / else, но если декодирование завершается неудачно, оно выдает и никогда не получает первый пропущенный if.
if let message = request.content.decode(MessageOne) {
// do something
} else if let message = request.content.decode(MessageTwo) {
// do something else
}
Есть ли лучший способ справиться с этим?
Примечание: я пытаюсь реализовать общий протокол для абстрагирования типа параметров, чтобы у меня не было тонны дублирующих структур.Таким образом, мы можем предположить, что все сообщения соответствуют одному и тому же протоколу.
Спасибо, Дерек