gpt4 book ai didi

ios - 快速转换在类签名中具有泛型的具体类型

转载 作者:行者123 更新时间:2023-12-01 21:45:37 26 4
gpt4 key购买 nike

我有一个 struct像这样

struct ApiResponse<T: Codable>: Codable {
let result: T?
let statusCode: String?
}

在我的代码中某处我需要 statusCode .我对 result 不感兴趣但 Swift 不允许我使用以下内容:
let apiResponse = value as? ApiResponse

它显示以下错误:

Generic parameter 'T' could not be inferred in cast to 'ApiResponse'



这很明显,因为结构定义要求一些符合 Codable 的结构但同时我不能使用一种类型,因为其他类型会失败。

例如
let apiResponse = value as? ApiResponse<ApiResult> 

对于一种类型的响应是正确的,但如果我有 ApiResponse<ApiOtherResult>它会失败。
        NetworkLayer.requestObject(router: router) { (result: NetworkResult<T>) in

switch result {
case .success(let value):
if let apiResponse = value as? ApiResponse {
}
case .failure: break
}

}

最佳答案

我建议添加一个新协议(protocol)

protocol StatusCodeProvider {
var statusCode: String? { get }
}

将其添加为函数中的要求,确保 TNetworkResult<T>符合 StatusCodeProvider并为每个 T 添加一致性你想请求。

关于ios - 快速转换在类签名中具有泛型的具体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62285398/

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