gpt4 book ai didi

iOS - 如何使用泛型在 Swift 中编写 DecodeHelper 类?

转载 作者:搜寻专家 更新时间:2023-10-31 22:17:57 25 4
gpt4 key购买 nike

我正在尝试创建自己的 DecodeHelper 类。

这是我挣扎的地方:

final class DecodeHelper {

static func myDecodeMethod<T>(data: Data, completion : (Result<T, ErrorResult>) -> Void) {

do {
let decoder = JSONDecoder()
let decodedData = try decoder.decode(Forecast.self, from: data)
completion(Result.success(decodedData))
} catch {
completion(Result.failure(.decoder(string: "Error while decoding json data")))
}
}
}

此方法会在收到Backend的数据后在switch中调用(仅成功案例)。

但我不知道如何以通用方式对其进行编码。我是否应该将预期类型作为参数传递(此处为 Forecast.self)?

这不是编译:

Cannot convert value of type 'Result<Forecast, _>' to expected argument type 'Result<_, ErrorResult>'

欢迎提出任何建议。

最佳答案

你已经很接近了,你只需要添加 TDecodable 的要求......

final class DecodeHelper {

static func myDecodeMethod<T: Decodable>(data: Data, completion : (Result<T, ErrorResult>) -> Void) {

do {
let decoder = JSONDecoder()
let decodedData = try decoder.decode(T.self, from: data)
completion(Result.success(decodedData))
} catch {
completion(Result.failure(.decoder(string: "Error while decoding json data")))
}
}
}

关于iOS - 如何使用泛型在 Swift 中编写 DecodeHelper 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50469054/

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