This question already has answers here:
Using JSONEncoder to encode a variable with Codable as type
(3个答案)
去年关闭。
我正在尝试创建一种方法,该方法接受符合Codable的对象,但是在尝试进行编码时出现此错误:
无法使用类型为“(Codable)”的参数列表调用“encode”
我如何编写一种方法来实现这一目标?
“Codable”或“Encodable”(协议)本身无法编码。它没有任何有关编码内容的信息。但是符合Encodable的类型可以提供该信息。
(3个答案)
去年关闭。
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”
我如何编写一种方法来实现这一目标?
最佳答案
您的签名不正确。您不需要Codable。您需要符合Codable的通用类型。具体来说,您只需要符合Encodable的一项即可:
func sendToServer<Message: Encodable>(message: Message) { ... }
“Codable”或“Encodable”(协议)本身无法编码。它没有任何有关编码内容的信息。但是符合Encodable的类型可以提供该信息。
关于ios - 如何编写一个函数,该函数接受符合Codable的任何对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54636826/
10-10 20:46