我目前正在学习 SwiftUI,但我无法让我的代码打印来自 API 的调用
NetworkManager.swift
class NetworkManager: ObservableObject {
@Published var allCountries = Countries()
func fetchAllCountries() {
if let url = URL(string: K.url) {
print(url)
let session = URLSession(configuration: .default)
let task = session.dataTask(with: url) { (data, response, error) in
if error == nil {
let decoder = JSONDecoder()
if let countriesData = data {
do {
let countries = try decoder.decode(Countries.self, from: countriesData)
DispatchQueue.main.async {
self.allCountries = countries
}
} catch {
print(error)
}
}
}
}
task.resume()
}
}
}
如果我打印 allCountries 我可以看到每个项目
但是在我的主视图中,当我尝试打印时(self.networkManager[5].name)出现索引超出范围错误
内容视图.swift
import SwiftUI
struct ContentView: View {
@ObservedObject var networkManager = NetworkManager()
var body: some View {
Text("Hello, World!")
.onAppear {
self.networkManager.fetchAllCountries()
print(self.networkManager.allCountries[5].name)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
谁能帮忙指出我哪里出错了?