【发布时间】: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”和“52”的基准结构
- 引用'quote'的引用结构
- 引用“价格”、“百分比变化_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