Как определить тип данных входящей почты? - PullRequest
1 голос
/ 26 апреля 2019

Я создаю приложение на основе 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
}

Есть ли лучший способ справиться с этим?

Примечание: я пытаюсь реализовать общий протокол для абстрагирования типа параметров, чтобы у меня не было тонны дублирующих структур.Таким образом, мы можем предположить, что все сообщения соответствуют одному и тому же протоколу.

Спасибо, Дерек

...