首页 > 解决方案 > Swift:使用整数作为结构中的字段

问题描述

我正在调用 Swift 中的 API,并且正在使用 JSONDecoder。API调用返回类别和ID,我遇到的问题是它将子类别存储在主类别ID的键下。

返回的数据如下所示:

categories = {
  data = {
    main = (
      {
        id = 39;
        name = Electronics;
      }
    )
    sub = {
      39 =
        (
          {
            id = 49;
            name = TV;
          }
        )
    }
  }
}

问题是39。在我的结构中,我不能拥有let 39:[Category],否则我会收到错误:

预期的模式。

有什么解决方法吗?

标签: swiftstruct

解决方案


不能用 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"

推荐阅读