我正在构建一个基于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
}
有没有更好的方法来解决这个问题?
旁注我正在尝试实现一个通用协议来抽象参数类型,因此我没有大量重复的结构。因此,我们可以假设所有消息都遵循相同的协议。
谢谢 德里克