【问题标题】:Initialising 'top' struct in Swift在 Swift 中初始化 'top' 结构
【发布时间】:2021-06-01 16:16:03
【问题描述】:

我目前正在尝试使用 Swift 初始化一个结构,它可以深入几个结构。调用外部 API 后,它会将我想要放入结构中的数据发回,以便我可以使用它来填充 TableView。

我想要解码如下所示的数据:

{
  "data": {
    "1": {
      "name": "Bitcoin",
      "quote": {
        "GBP": {
          "price": 25794.72142905233,
          "percent_change_1h": -1.4133929,
          "percent_change_24h": -0.74636982,
          "percent_change_7d": -5.8533249
        }
      }
    },
    "52": {
      "name": "XRP",
      "quote": {
        "GBP": {
          "price": 0.7157097479533718,
          "percent_change_1h": -1.35513268,
          "percent_change_24h": 1.84172355,
          "percent_change_7d": 5.05130272
        }
      }
    }
}

为此,我有以下 Struct 结构:

  1. 引用数据的硬币结构
  2. 引用“1”和“52”的基准结构
  3. 引用'quote'的引用结构
  4. 引用“价格”、“百分比变化_1h”的英镑结构

这些看起来像这样:

struct Coin: Codable {
    let data: [String: Datum]
}

struct Datum: Codable {
    let name: String
    let quote: Quote
}

struct Quote: Codable {
    let gbp: Gbp

    enum CodingKeys: String, CodingKey {
        case gbp = "GBP"
    }
}

struct Gbp: Codable {
    let price, percentChange1H, percentChange24H, percentChange7D: Double

    enum CodingKeys: String, CodingKey {
        case price
        case percentChange1H = "percent_change_1h"
        case percentChange24H = "percent_change_24h"
        case percentChange7D = "percent_change_7d"
    }
}

然后我尝试在变量名“coins”下设置一个空的“Coin”结构变量,如下所示:

var coins = Coin()

不幸的是 - 尝试这样做会提示以下错误:

调用中的参数“数据”缺少参数

如果我按照提示进行操作,我可以插入以下内容:

var coins = Coin(data: [String : Datum])

但这会产生以下错误:

无法将“[String: Datum].Type”类型的值转换为预期值 参数类型'[String: Datum]'

请有人指出这里出了什么问题吗?我是否错误地构建了我的结构?有没有我可以做的替代方案?

【问题讨论】:

    标签: swift


    【解决方案1】:

    而不是[String : Datum],编译器告诉你的是Type,使用[:],这是空Dictionary的Swift语法:

    var coins = Coin(data: [:])
    

    【讨论】:

    • 完美运行。感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 2016-03-20
    • 2020-03-05
    • 1970-01-01
    • 2022-08-18
    • 2016-03-20
    相关资源
    最近更新 更多