我怎么能写它接受一个符合可编码任何对象的函数[复制]

问题描述 投票:1回答:1

这个问题已经在这里有一个答案:

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)")
    }
}

我想创建它接受它符合可编码对象的方法,但我收到的时候我试图编码此错误:

不能援引“编码”与类型的参数列表“(可编码)”

我怎样才能写出实现这个方法?

ios swift codable
1个回答
2
投票

你的签名不正确。你不想要一个可编码。你要符合可编码的泛型类型。具体而言,真正需要的只是一个符合可编码:

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

A“可编码的”或“可编码”(协议)本身不能被编码。它没有什么编码的任何信息。但是,符合可编码类型提供这些信息。

© www.soinside.com 2019 - 2024. All rights reserved.