gpt4 book ai didi

swift - 如何在可解码模型中使用继承

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

我有一些从服务器接收到的 json 结果。他们都有一个共享部分。然后在 results 属性中,返回值不同。

{
"code": 200,
"status": "Ok"
"data":
{
"count": 3,
"total": 7,
"results": [
{
"id": 43424,
"title": "some title"
}
]

}
}

正如我所说,我所有模型的结构都是相同的。它们仅在 results 上不同。我想做的是避免编写冗余代码,并使用继承来创建一个具有所有共享部分的 BaseClass,我的模型继承这个 BaseClass。我看过一些关于 Decodable 模型中的继承的教程和帖子,但我仍然不清楚如何实现它。

最佳答案

而不是继承和使用泛型和结构,因为Decodable 默认不支持继承。

例如创建一个结构JSONParser

struct JSONParser<T : Decodable> {

struct ResponseData<U : Decodable> : Decodable {
let total, count : Int
let results : [U]
}

let code : Int
let status : String
let data : ResponseData<T>

init(data: Data) throws {
let decoder = JSONDecoder()
data = try decoder.decode(ResponseData.self, from: data)
}
}

并将其用于包含idtitle 的字典

struct Item {
let id : Int
let title : String
}

do {
let jsonParser = try JSONParser<Item>(data: data)
let results = jsonParser.data.results
} catch { print(error) }

关于swift - 如何在可解码模型中使用继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56839613/

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