Swiftui 未将JSON数据复制到结构
此api被正确调用,未落入“获取失败”错误行。ContentView结构包含一个底部带有.onAppear的标准菜单。使用Xcode调试器,我可以在decodedResponse中看到数据,但在result中看不到。真的有必要使用@State结果吗?result/UserRates中的一些值将立即取出并存储在其他位置。我也想使用检索的日期,但目前我的结果定义保留其未定义的日期。我假设要从结构中检索数据,它是:UserRates.rates[9]。key和UserRates.rates[9]。value。尝试使用print语句读取这些语句将返回错误 盖伦·史密斯Swiftui 未将JSON数据复制到结构,swiftui,Swiftui,此api被正确调用,未落入“获取失败”错误行。ContentView结构包含一个底部带有.onAppear的标准菜单。使用Xcode调试器,我可以在decodedResponse中看到数据,但在result中看不到。真的有必要使用@State结果吗?result/UserRates中的一些值将立即取出并存储在其他位置。我也想使用检索的日期,但目前我的结果定义保留其未定义的日期。我假设要从结构中检索数据,它是:UserRates.rates[9]。key和UserRates.rates[9]。va
struct UserRates: Codable {
let rates:[String: Double]
let base: String
let date: String
}
struct ContentView: View {
@State private var results = UserRates(rates: [:], base: "", date: "")
var body: some View {
... standard menu system in body
.onAppear(perform: loadCurrencies)
}
private func loadCurrencies() {
guard let url = URL(string: "https://api.exchangeratesapi.io/latest?base=USD") else {
print("Invalid URL")
return
}
let request = URLRequest(url: url)
URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data {
if let decodedResponse = try? JSONDecoder().decode(UserRates.self, from: data) {
// we have good data – go back to the main thread
DispatchQueue.main.async {
// update our UI
**self.results = decodedResponse**
}
return
}
}
// problem if we fail into this
print("Fetch failed: \(error?.localizedDescription ?? "Unknown error")")
}.resume()
}
}
我计划将decodedResponse中的32个字符串/双精度数据对复制到UserRates结构,然后使用dictionary键/值方法查找并复制11个汇率到rateArray。但是由于复制总是失败,我决定在decodedResponse结构上使用dictionary key/value方法,直接复制到rateArray,完全跳过UserRate结构。我可能在将来使用更多的汇率,这就是为什么我从我的来源加载所有可用的汇率。rateArray的真正目的是存储汇率的倒数 加伦