在 swift 中无法访问泛型结构的 decoadable 中的嵌套值?

It is impossible to access the nested value in decoadable of generic type of struct in swift?

我想知道如果我将数据从 api 解码为通用类型的模型 class,我是否可以访问通用类型的嵌套值。 抱歉英语不好。

GeneralResponse.swift - class 将数据映射到对象有数据 class 是通用类型

struct GeneralResponse<T: Decodable>: Decodable {
    var code: String
    var dataResponse : T
}

Model.swift - dataResponse 字段中地图的模型 class。

struct Model: Decodable {
    var name: String
    var lname: String
}

APIManager.swift - 将数据从 api 映射到对象(模型的发送类型)

var myStruct = try! JSONDecoder().decode(GeneralResponse<T>.self, from: jsonData)

ViewController.swift - 在 APIManager

中调用一个方法
APIManager.callRequest(url: "someURL", type: Model.self)

在这种情况下,我想访问 "name" 或 "lname" 但它不能。

您可以执行以下操作:

do {
    let myStruct = try JSONDecoder().decode(GeneralResponse<Model>.self, from: jsonData)
    print(myStruct.dataResponse.name)
    print(myStruct.dataResponse.lname)
} catch {
    print("error: \(error)")
}

请参考以下代码

APIManager.swift

func callRequest<T:Decodable>(url: String,modelClass:T.Type,SuccessBlock:@escaping (T) -> Void){
    do {
        var myStruct = try JSONDecoder().decode(GeneralResponse<T>.self, from: Data())
        SuccessBlock(myStruct.dataResponse)
    } catch let error {
        print(error)
    }
}

ViewController.swift

callRequest(url:"someURL",modelClass: Model.self, SuccessBlock: { (response) in
     print(response.lname,response.name)
})