This question already has answers here:
Using JSONEncoder to encode a variable with Codable as type

(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