[英]SwiftUI Picker data from JSON not displayed
我在 swiftui 中有一個選擇器,我需要從我目前在我的 mac 上托管的 json 中填充它。
當我運行代碼時,顯示的選擇器保持為空,但數據可用(如果我單擊下面的按鈕打印它)。
這是我的代碼:
選擇器(ContentView.swift):
@State var nwm = NetworkManager()
...
Picker("Wähle deine Schule", selection: $selectedSchool) {
ForEach(0 ..< nwm.schoolList.results.count) {
Text(self.nwm.schoolList.results[$0].name).tag($0)
}
}.labelsHidden()
網絡管理器.swift:
class NetworkManager : ObservableObject {
var didChange = PassthroughSubject<NetworkManager, Never>()
var schoolList = SchoolList(results: []) {
didSet {
didChange.send(self)
}
}
init() {
guard let url = URL(string: "http://jonasmacbookpro.local:8083/IOSApp/getDKSchools") else { return }
URLSession.shared.dataTask(with: url) {
(data, _, _) in
let schoolList = try! JSONDecoder().decode(SchoolList.self, from: data!)
DispatchQueue.main.async {
self.schoolList = schoolList
}
}.resume()
}
}
學校.swift
struct School : Identifiable, Decodable {
let id = UUID()
var name : String
var ort : String
var link : String
}
struct SchoolList: Decodable {
var results: [School]
}
有誰知道,為什么它不起作用?
代替
@State var nwm = NetworkManager()
采用
@ObservedObject var nwm = NetworkManager()
而不是
var didChange = PassthroughSubject<NetworkManager, Never>() var schoolList = SchoolList(results: []) { didSet { didChange.send(self) } }
采用
@Published var schoolList = SchoolList(results: [])
讓picker刷新就是添加一個唯一的id。 您可以將.id(UUID())
添加到您的選擇器中,它應該可以正常工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.