swift - Swift:使用整数作为结构中的字段
问题描述
我正在调用 Swift 中的 API,并且正在使用 JSONDecoder。API调用返回类别和ID,我遇到的问题是它将子类别存储在主类别ID的键下。
返回的数据如下所示:
categories = {
data = {
main = (
{
id = 39;
name = Electronics;
}
)
sub = {
39 =
(
{
id = 49;
name = TV;
}
)
}
}
}
问题是39
。在我的结构中,我不能拥有let 39:[Category]
,否则我会收到错误:
预期的模式。
有什么解决方法吗?
解决方案
不能用 39 作为参数名,但是可以用这个
let category_39: [Category]
private enum CodingKeys : String, CodingKey {
case category_39 = "39"
}
但是我认为这种结构会很困难,如果从服务器端添加一个新的类别没有预定义的类别 id 我建议使用以下模型
struct Model: Codable {
let main: [Category]
let sub: [String: [Category]]
}
struct Category: Codable {
let id: Int
let name: String
}
然后按类别 id 获取 SubCategories
let subCategories = model.sub[String(id)] // String(id) --> "39"
推荐阅读
- javascript - Javascript如何在正文中添加点击事件监听器?
- c# - 使用 NHibernate ClassMapping 自动将列映射到类属性
- c# - Devexpress:AspxGridView 的 OnCustomButtonCallback 事件不响应自定义编辑
- javascript - 如何将html文件中的javascript数组传递给django中的另一个html文件并重定向到新的html文件
- kotlin - 在取自暂停存储库的 ViewModel 中传递 LiveData 的正确方法
- c# - 如何在 C# 的 datetimepicker 控件中验证是否选择了日期?
- android - cocos 2dx cpp中的迷宫生成
- flutter - 如何设置小部件的位置?
- android - 为什么每次我实现这个逻辑时我的应用程序都会崩溃?
- php - Xdebug 是否依赖于 PHP 版本(VSCode IDE)?