初始化';顶部';Swift中的结构
我目前正试图用Swift初始化一个结构,它有好几个结构深度。一旦调用了外部API,它就会发回我想要放入结构中的数据,以便我可以使用它来填充TableView 我想解码如下所示的数据:初始化';顶部';Swift中的结构,swift,Swift,我目前正试图用Swift初始化一个结构,它有好几个结构深度。一旦调用了外部API,它就会发回我想要放入结构中的数据,以便我可以使用它来填充TableView 我想解码如下所示的数据: { "data": { "1": { "name": "Bitcoin", "quote": { "GBP": { &quo
{
"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 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"
}
}
为此,我有以下结构:
{
"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 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()
很遗憾,尝试执行此操作会提示以下错误:
调用中缺少参数“data”的参数
如果我随后按照提示操作,我可以插入以下内容:
var coins = Coin(data: [String : Datum])
但这会产生以下错误:
无法将类型“[String:Datum].type”的值转换为预期值
参数类型“[String:Datum]”
有人能指出这里出了什么问题吗?我是否错误地构建了结构?我能做什么呢?而不是
[String:Datum]
,编译器告诉您这是类型
,使用[:]
,这是空字典
的快速语法:
var coins = Coin(data: [:])
与其使用编译器告诉您是
类型的[字符串:数据]
,不如使用[:]
,这是空字典的快速语法
:
var coins = Coin(data: [:])
工作得很好。谢谢你的回复!工作得很好。谢谢你的回复!