iOS - 如何使用泛型在 Swift 中编写 DecodeHelper Class?
iOS - How to code a DecodeHelper Class in Swift with Generics?
我正在尝试创建自己的 DecodeHelper class。
这是我挣扎的地方:
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>'
欢迎提出任何建议。
你已经很接近了,你只需要添加要求 T
是 Decodable
…
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")))
}
}
}
我正在尝试创建自己的 DecodeHelper class。
这是我挣扎的地方:
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>'
欢迎提出任何建议。
你已经很接近了,你只需要添加要求 T
是 Decodable
…
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")))
}
}
}