【发布时间】:2021-08-07 11:25:35
【问题描述】:
我不确定如何集成要在我的图表中使用的 API 获取代码。是否可以修改我现有的代码以将 API 值相应地发送到我的图表的 X 和 Y 轴?如果是这样,我应该如何在代码放置等方面做到这一点?我希望使用 forEach 函数来解码每个值、电压、电流、温度和时间。以电压、电流和温度为 X 轴,时间为 Y 轴。
当前的 CorePlot 代码:
import Foundation
import SwiftUI
import CorePlot
class CalculatePlotData: ObservableObject {
var plotDataModel: PlotDataClass? = nil
func plotYEqualsX()
{
//set the Plot Parameters
plotDataModel!.changingPlotParameters.yMax = 10.0
plotDataModel!.changingPlotParameters.yMin = -5.0
plotDataModel!.changingPlotParameters.xMax = 10.0
plotDataModel!.changingPlotParameters.xMin = -5.0
plotDataModel!.changingPlotParameters.xLabel = "x"
plotDataModel!.changingPlotParameters.yLabel = "y"
plotDataModel!.changingPlotParameters.lineColor = .red()
plotDataModel!.changingPlotParameters.title = " y = x"
plotDataModel!.zeroData()
var plotData :[plotDataType] = []
for i in 0 ..< 120 {
//create x values here
let x = -2.0 + Double(i) * 0.2
//create y values here
let y = x * 8
let dataPoint: plotDataType = [.X: x, .Y: y]
plotData.append(contentsOf: [dataPoint])
}
plotDataModel!.appendData(dataPoint: plotData)
}
func ploteToTheMinusX()
{
//set the Plot Parameters
plotDataModel!.changingPlotParameters.yMax = 10
plotDataModel!.changingPlotParameters.yMin = -3.0
plotDataModel!.changingPlotParameters.xMax = 10.0
plotDataModel!.changingPlotParameters.xMin = -3.0
plotDataModel!.changingPlotParameters.xLabel = "x"
plotDataModel!.changingPlotParameters.yLabel = "y = exp(-x)"
plotDataModel!.changingPlotParameters.lineColor = .blue()
plotDataModel!.changingPlotParameters.title = "exp(-x)"
plotDataModel!.zeroData()
var plotData :[plotDataType] = []
for i in 0 ..< 60 {
//create x values here
let x = -8.0 + Double(i) * 5
//create y values here
let y = exp(-x)
let dataPoint: plotDataType = [.X: x, .Y: y]
plotData.append(contentsOf: [dataPoint])
}
plotDataModel!.appendData(dataPoint: plotData)
return
}
}
获取 API 数据到 IOS 应用的示例代码:
import Foundation
struct datamainjsonlatest: Codable, Identifiable {
var id: String
var times: String
var Voltage: String
var Current: String
var Temperature: String
}
class Api : ObservableObject{
@Published var datamainjsonlatests = [datamainjsonlatest]()
func loadData(completion:@escaping ([datamainjsonlatest]) -> ()) {
guard let url = URL(string: "https://dcmicrogridiep.000webhostapp.com/datamainlatestjson.php") else {
print("Invalid url...")
return
}
URLSession.shared.dataTask(with: url) { data, response, error in
let datamainjsonlatests = try! JSONDecoder().decode([datamainjsonlatest].self, from: data!)
print(datamainjsonlatests)
DispatchQueue.main.async {
completion(datamainjsonlatests)
}
}.resume()
}
}
【问题讨论】:
标签: ios swiftui core-plot rest