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”
如何编写一种方法来实现这一目标?
答案 0 :(得分:2)
您的签名不正确。您不需要Codable。您需要一个符合Codable的通用类型。具体来说,您只需要一个符合Encodable的内容即可:
func sendToServer<Message: Encodable>(message: Message) { ... }
“可编码”或“可编码”(协议)本身无法编码。它没有任何有关编码内容的信息。但是符合符合Encodable的类型可以提供该信息。