我如何编写一个函数,该函数接受符合Codable的任何对象

时间:2019-02-11 18:24:55

标签: ios swift codable

func sendToServer(message: Codable) {
    do {
        let jsonData = try JSONEncoder().encode(message)
        let jsonString = String(data: jsonData, encoding: .utf8)!
        // send to server jsonString
    } catch let error {
        debugPrint("Error occured during parsing \(error.localizedDescription)")
    }
}

我正在尝试创建一种方法,该方法接受符合Codable的对象,但是在尝试编码时出现此错误:

  

不能使用类型为“(Codable)”的参数列表调用“ encode”

如何编写一种方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

您的签名不正确。您不需要Codable。您需要一个符合Codable的通用类型。具体来说,您只需要一个符合Encodable的内容即可:

func sendToServer<Message: Encodable>(message: Message) { ... }

“可编码”或“可编码”(协议)本身无法编码。它没有任何有关编码内容的信息。但是符合符合Encodable的类型可以提供该信息。