【发布时间】:2020-08-17 12:19:11
【问题描述】:
我的 JSON:
https://www.cbr-xml-daily.ru/daily_json.js
我的代码:
struct CoinData: Decodable {
let Valute: [String: CoinInfo]
}
struct CoinInfo: Decodable {
let Name: String
let Value: Double
}
if let safeData = data {
if let coinData = self.parseJSON(safeData) {
print(coinData)
}
}
func parseJSON(_ data: Data) -> [String: CoinInfo]? {
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(CoinData.self, from: data)
return decodedData.Valute
} catch {
delegate?.didFailWithError(error: error)
return nil
}
}
在调试控制台中打印以下内容:
["PLN": CurrencyConverter.CoinInfo(Name: "X", Value: 19.6678), ...]
这样我无法访问硬币的Name 和Value 属性。怎么了?
【问题讨论】:
-
“这样我就无法获得硬币的名称和价值属性。”你可以。您使用什么代码尝试访问它们?该代码产生了什么错误?
-
你期望
coinData.Valute给你哪个硬币的哪个属性?换句话说,您尝试使用coinData.Valute访问哪个硬币的哪个属性(Name或Value)? -
我要做for循环来检查一个键是否包含某些符号。如果是这样 - 我将需要能够同时访问
Name和Value。所以哪一个并不重要。 -
我试过
coinData.values[0]- “无法将'Int'类型的值转换为预期的参数类型'Dictionary.Index'”。我也试过: coinData.Valute/CoinInfo/Name- “'[String : CoinInfo]' 类型的值没有成员......”