如何解决SwiftUI 从具有条目值的 URL 解析 json
当我需要将一个 json 文件加载到 swiftUI 时,我被卡住了,而这个 json 来自一个 URL,其中的入口变量必须由用户在获取数据之前填写。 我有以下代码:
// This is the structure to get the data from the API.
struct loka_result: Codable {
var date: String
var time: String
var unix_time: Int
var seqNumber : Int
var lat: Double
var lng: Double
var device: String
var accuracy: Double
var info: String
var temperature : Double?
var battery_voltage : Float?
}
// Now conform to Identifiable
extension loka_result: Identifiable {
public var id: Int { return unix_time }
}
// Model Data to get the data
final class ModelData: ObservableObject {
@Published var allthelokas : [loka_result] = loadAllData(deviceid:selected_loka,timedelta: selected_delta)
}
// Function to get and parse the data
func loadAllData<T: Decodable>(deviceid:String,timedelta:Int) -> T
{
let url = URL(string: "https://xxxx.PHP?device=\(deviceid)&hours=\(timedelta)"),data = try? Data(contentsOf: url!)
return
try! JSONDecoder().decode(T.self,from: data!)
}
然后在 TempChartView 中我想得到一个列表
import SwiftUI
struct TempChartNew: View {
@EnvironmentObject var modelData: ModelData
var body: some View {
vstack {
List(modelData.allthelokas) { j in
// ForEach(modelData.allthelokas) { jj in
HStack {
Text(j.device)
Text(j.date)
Text(j.time)
Text(String(j.seqNumber))
}
}
}
}
}
struct TempChartNew_Previews: PreviewProvider {
static var previews: some View {
TempChartNew().environmentObject(ModelData())
}
}
所有这些都有效,因为只是为了测试它,我添加了两个全局变量来填充函数的数据。
var selected_loka: String = "3JJJ30"
var selected_delta: Int = 24
但想法是让视图有两个入口点。 它在这里我被卡住了!我不知道如何将变量传递给类。 有谁可以指出我正确的方向吗? - 谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。