【发布时间】:2020-05-29 15:38:16
【问题描述】:
我正在创建一个简单的 iOS 应用程序,我使用以下函数从 API(开源)获取数据:
private func fetchCurrencies() {
if let url = URL(string: "http://data.fixer.io/api/latest?access_key=a5b8f8bd7583e32252946741********"){
let session = URLSession(configuration: .default)
let task = session.dataTask(with: url) { data, response, error in
guard error == nil else{
return
}
if let data = data {
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(Rates.self, from: data)
let array = decodedData.rates
DispatchQueue.main.async {
self.tableView.reloadData()
}
} catch {
print("error decoding")
}
}
}
task.resume()
}
}
数据模型是:
struct Rates: Codable {
let rates: [String: Double]
}
以下是我的 API 数据的一部分:
"success": true,
"timestamp": 1590762665,
"base": "EUR",
"date": "2020-05-29",
"rates": {
"AED": 4.08666,
"AFN": 85.22449,
"ALL": 124.556499,
"AMD": 538.156223,
"ANG": 1.996181,
"AOA": 645.803727,
"ARS": 76.250753,
"AUD": 1.672917,
"AWG": 2.002692,
"AZN": 1.896163,
"BAM": 1.95413,
"BBD": 2.245466,
"BDT": 94.371782,
// and so on .....
获取数据工作正常,我收到了汇率,但我不知道如何在我的表格视图中发布这些数据(例如:单元格文本货币和单元格详细信息文本作为汇率)而且我觉得我的模型是没有按应有的结构,所以正确的方法应该是获取费率数据并将它们发布到我的表格视图中,作为数据建模,获取它们和表格单元格数据插入。
以下是我将数组打印到控制台时出现的部分内容:
▿ 168 elements
▿ 0 : 2 elements
- key : "HKD"
- value : 8.615716
▿ 1 : 2 elements
- key : "IMP"
- value : 0.900216
▿ 2 : 2 elements
- key : "ZWL"
- value : 357.865214
▿ 3 : 2 elements
- key : "LBP"
- value : 1676.38247
我希望我说清楚了,
提前谢谢你,
【问题讨论】:
-
我会使用带有
String和Double的Rate结构(或者更适合货币使用NSDecimalNumber)属性。然后创建一个Rate数组,您可以将其用作表的数据源。 -
首先,我使用了您建议的相同方式,但它一直给我错误解码数据,如果您将代码建议发布到答案中,我将不胜感激,这样我就可以更清楚地了解您的方法: )
-
将你的json发布到app.quicktype.io,它会给你匹配的数据模型。
-
这就是我得到的 :) struct Empty: Codable { let rates: [String: Double] }
-
没错! ,提交答案中的链接,以便能够勾选您的答案并给您+1,如果有兴趣,谢谢:)
标签: ios arrays swift dictionary