gpt4 book ai didi

swift - 无法使用类型为 'decode' 的参数列表调用 '(Decodable, from: Data)'

转载 作者:行者123 更新时间:2023-11-28 13:53:06 28 4
gpt4 key购买 nike

我在 Playground 中有以下示例代码。如果结果符合 Decodable 协议(protocol),我想解码网络请求的结果。

知道为什么这段代码不起作用吗?

protocol APIRequest {
associatedtype Result
}

func execute<T: APIRequest>(request: T) {
if let decodableResult = T.Result.self as? Decodable {
try JSONDecoder().decode(decodableResult, from: Data())
}
}

我收到错误 Cannot invoke 'decode' with an argument list of type '(Decodable, from: Data)' 在此行:try JSONDecoder().decode(decodableResult , 来自: Data())

非常感谢任何输入!

最佳答案

JSONDecoder.decode(_:from:) 方法需要一个符合 Decodable 的具体类型作为其输入参数。您需要向 T.Result 添加一个额外的类型约束,以使其成为 Decodable

func execute<T: APIRequest>(request: T) throws where T.Result: Decodable {
try JSONDecoder().decode(T.Result.self, from: Data())
}

顺便说一句,尝试解码一个空的 Data 实例有什么意义?

关于swift - 无法使用类型为 'decode' 的参数列表调用 '(Decodable, from: Data)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54307524/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com