gpt4 book ai didi

json - 如何在 swift 3.0 中通过 url 使用异步方式获取多个 JSON 数据

转载 作者:行者123 更新时间:2023-11-30 12:46:07 25 4
gpt4 key购买 nike

在这里,我尝试获取最近 30 个日期的 INR 货币值。

我正在使用 Alamofire 获取最近 30 个日期的 INR 货币值。

//strDates contains all 30 days dates

for i in 0..<strDates.count {
Alamofire.request("http://api.fixer.io/\(strDates[i])?base=USD").responseJSON { response in
if let arr = response.result.value as? [String:AnyObject]
{
let inrc = (arr["rates"]?["INR"] as? Double)!
print(inrc)
self.sValues.append(inc)
print(sValues)
//It prints values here.
}
}
}
print(sValues) //Print nil

setChart(dataPoints: strDates, values: sValues)

如何在 Alamofire block 之外使用此 sValues 数组。

在这里,实际上我将日期和 INR 值作为参数发送给下面的方法。

func setChart(dataPoints: [String], values: [Double]) {
barChartView.noDataText = "You need to provide data for the chart."

for i in 0..<dataPoints.count {
let dataEntry = BarChartDataEntry(x: Double(i), yValues: [values[i]])
dataEntries.append(dataEntry)
}

let chartDataSet = BarChartDataSet(values: dataEntries, label: "INR Rates(₹)/$")
let chartData = BarChartData(dataSet: chartDataSet)
barChartView.data = chartData
barChartView.xAxis.labelPosition = .bottom
barChartView.rightAxis.enabled = false
barChartView.leftAxis.enabled = true
barChartView.data?.setDrawValues(false)
barChartView.leftAxis.granularityEnabled = true
barChartView.leftAxis.granularity = 1.0
barChartView.xAxis.granularityEnabled = true
barChartView.xAxis.granularity = 1.0
barChartView.leftAxis.axisMinimum = 70//65
barChartView.leftAxis.axisMaximum = 60//70

//chartDataSet.colors = [UIColor.cyan, UIColor.green]
}

最佳答案

您是否希望图表仅在所有调用完成后才刷新?如果是这样,您可以使用这样的模式:

    var completedCalls = 0
for i in 0..<strDates.count {
Alamofire.request("http://api.fixer.io/\(strDates[i])?base=USD").responseJSON { response in
if let arr = response.result.value as? [String:AnyObject]
{
completedCalls += 1
let inrc = (arr["rates"]?["INR"] as? Double)!
print(inrc)
self.sValues.append(inc)
print(sValues)
//It prints values here.
if completedCalls = strDates.count {
DispatchQueue.main {
setChart(dataPoints: strDates, values: sValues)
}
}
}
}
}

这个想法是计算有多少 API 请求返回,并且仅在所有请求完成后才采取行动(您应该检查所有请求是否实际上都成功,如果失败则显示错误)。

关于json - 如何在 swift 3.0 中通过 url 使用异步方式获取多个 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41628871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com