【发布时间】:2023-04-08 09:39:01
【问题描述】:
我正在尝试设置一个名为 allCountries 的已发布变量。在我的 DispatchQueue 中,它正在被设置并且实际上正在将正确的信息打印到控制台。在我的内容视图中,数组中没有任何内容。在内容视图的 init 函数中,我正在调用将获取数据并设置变量的函数,但是当我打印到控制台时,变量是空白的。谁能告诉我我做错了什么?
这里是我获取数据的地方
class GetCountries: ObservableObject {
@Published var allCountries = [Countries]()
func getAllPosts() {
guard let url = URL(string: "apiURL")
else {
fatalError("URL does not work!")
}
URLSession.shared.dataTask(with: url) { data, _, _ in
do {
if let data = data {
let posts = try JSONDecoder().decode([Countries].self, from: data)
DispatchQueue.main.async {
self.allCountries = posts
print(self.allCountries)
}
} else {
DispatchQueue.main.async {
print("didn't work")
}
}
}
catch {
DispatchQueue.main.async {
print(error.localizedDescription)
}
}
}.resume()
}
}
这是我的内容视图
struct ContentView: View {
var countries = ["Select Your Country", "Canada", "Mexico", "United States"]
@ObservedObject var countries2 = GetCountries()
@State private var selectedCountries = 0
init() {
GetCountries().getAllPosts()
print(countries2.allCountries)
}
var body: some View {
NavigationView {
ZStack {
VStack {
Text("\(countries2.allCountries.count)")}}}
【问题讨论】: