这是我当前拥有的SWIFT代码:
import SwiftUI
struct Holidays: Decodable {
var date: String
var localName: String
var name: String
var countryCode: String
}
struct HolidaysView: View {
@State private var holidays = [Holidays]()
var body: some View {
NavigationView {
List(holidays, id: \.name) { t in
VStack(alignment: .leading) {
Text(t.date)
.font(.headline)
.foregroundColor(.cyan)
Text(t.name)
.font(.body)
.foregroundColor(.indigo)
Text(t.countryCode)
.font(.body)
.foregroundColor(.red)
}
}
.navigationTitle("Holidays List")
.task {
await fetchHolidaysData()
}
}
}
func fetchHolidaysData() async {
// create the URL
guard let url = URL(string: "https://date.nager.at/api/v2/publicholidays/2020/US") else {
print("THIS URL DOES NOT WORK!")
return
}
// fetch the data
do {
let (data, _) = try await URLSession.shared.data(from: url)
// decode that data
if let decodedResponse = try? JSONDecoder().decode([Holidays].self, from: data) {
holidays = decodedResponse
}
} catch {
print("This data is not valid")
}
}
}
struct HolidaysView_Previews: PreviewProvider {
static var previews: some View {
HolidaysView()
}
}
此代码的目标是能够使用URL查看json数据. 当我单击假日列表的导航标题时,没有显示任何数据(在contentview中). 我try 过其他API链接,例如Python的API占位符,它们很有效.我无法弄清楚问题或区别.我也try 过人工智能.我不知道我做错了什么,我是否必须使用API的所有数据变量?或者可能是ID?我使用的其他api都有每个数据部分的id,所以我把
List(holidays, id: \.name) { t in ```
as
List(todos, id: \.id) { t in ```
```, could this be a possible reason?