API未在iOS的Swift中显示数据

API未在iOS的Swift中显示数据,ios,swift,Ios,Swift,当前未从API获取要显示的数据 当前代码: import SwiftUI struct Response: Decodable { var content: [Result] } struct Result : Decodable { var code: String var fire: String var name: String var police: String var medical: String } struct Conten

当前未从API获取要显示的数据

当前代码:

import SwiftUI

struct Response: Decodable {
    var content: [Result]
}

struct Result : Decodable {
    var code: String
    var fire: String
    var name: String
    var police: String
    var medical: String
}

struct ContentView: View {
    @State private var content = [Result]()

    var body: some View {
        List(content, id: \.code) { item in
            VStack(alignment: .leading) {
                Text(item.name)
                    .font(.headline)
                Text(item.medical)
            }
        }
        .onAppear(perform: loadData)
    }
    func loadData() {
        
        let url = URL(string: "https://emergency-phone-numbers.herokuapp.com/country/gb")!

        URLSession.shared.dataTask(with: url) { data, response, error in
            if let error = error { print(error); return }
            do {
                let decodedResponse = try JSONDecoder().decode(Response.self, from: data!)
                // we have good data – go back to the main thread
                DispatchQueue.main.async {
                    // update our UI
                    self.content = decodedResponse.content
                }
                
            } catch {
                print(error)
            }
        }.resume()
        
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
当前错误:

2021-01-21 19:21:07.094582+0000 iTunes API[39924:1098972][]nw_协议获取图像块调用dlopen libquic失败 keyNotFound(编码键(stringValue:“内容”,intValue:nil),Swift.DecodingError.Context(编码路径:[],调试说明:“没有与键编码键关联的值(stringValue:“内容”,intValue:nil)(“内容”),“underlyingError:nil))


请告知。提前感谢。

请注意,
https://emergency-phone-numbers.herokuapp.com/country/gb
是:

{“code”:“GB”,“fire”:“999”,“police”:“999”,“name”:“ukin”,“medical”:“999”}
问题是您得到的响应上没有
内容
,因此
JSONDecoder
无法解析响应。您得到的响应似乎包含符合
结果的内容,因此,如果您更改代码以解析该内容,它将正常工作:

导入快捷界面
结构响应:可解码{
var内容:[结果]
}
结构结果:可解码{
变量代码:字符串
var-fire:字符串
变量名称:String
警察:绳子
var医疗:字符串
}
结构ContentView:View{
@国家私有变量内容=[结果]()
var body:一些观点{
列表(内容,id:\.code){中的项目
VStack(对齐:。前导){
文本(项目名称)
.font(.headline)
案文(项目.医疗)
}
}
.onAppear(执行:loadData)
}
func loadData(){
让url=url(字符串:https://emergency-phone-numbers.herokuapp.com/country/gb")!
URLSession.shared.dataTask(with:url){data,response,中的错误
如果let error=error{print(error);return}
做{
让decodedResponse=尝试JSONDecoder().decode(Result.self,from:data!)
//我们有很好的数据–回到主线程
DispatchQueue.main.async{
//更新我们的用户界面
self.content=[decodedResponse]
}
}抓住{
打印(错误)
}
}1.简历()
}
}
我想,最后,您可能希望一个
结果
集合适合
内容
,因此您可能需要更改API上的某些内容以返回该集合,然后您的代码就可以正常工作了