gpt4 book ai didi

swift - 可编码的失败初始化器

转载 作者:行者123 更新时间:2023-11-30 10:41:23 26 4
gpt4 key购买 nike

我正在尝试解析以下项目数组的 json 模式,itemID 可能不为空。如何使 JSON 中不存在的项目 nil id itemID

[{
"itemID": "123",
"itemTitle": "Hello"
},
{},
...
]

我的可解码类如下:

public struct Item: : NSObject, Codable {
let itemID: String
let itemTitle: String?
}

private enum CodingKeys: String, CodingKey {
case itemID
case itemTitle
}

required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)

itemID = try container.decode(String.self, forKey: .itemID)
itemTitle = try container.decodeIfPresent(String.self, forKey: .itemTitle)

super.init()
}
}

最佳答案

首先,itemIDInt,而不是 JSON 响应中的 String.所以struct Item看起来像,

public struct Item: Codable {
let itemID: Int?
let itemTitle: String?
}

解析 JSON 就像,

if let data = data {
do {
let items = try JSONDecoder().decode([Item].self, from: data).filter({$0.itemID == nil})
print(items)
} catch {
print(error)
}
}

在上面的代码中,您可以简单地过滤带有itemID == nil的项目。

关于swift - 可编码的失败初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723089/

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