gpt4 book ai didi

ios - 来自 JSON 的 SwiftUI Picker 数据未显示

转载 作者:行者123 更新时间:2023-11-29 11:25:03 24 4
gpt4 key购买 nike

我在 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: [])

关于ios - 来自 JSON 的 SwiftUI Picker 数据未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59312337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com