为了学习,我正在解析一个网站上的HTML数据。我收集这些数据并添加到类DataManager中的一个名为“arrayDuty”的数组中:ObservableObject
var arrayDuty : [Duty] = []
{
didSet {
objectWillChange.send()
}
}
使用调试工具,我可以看到我的数组中的数据(在这个例子中是3个值):
在我的内容视图中,我尝试显示一个列表,其中包含数组中每个值的数据,
struct ContentView: View {
@ObservedObject var dm : DataManager
var body: some View {
VStack {
List(dm.arrayDuty){ item in
Text(item.dutyDay)
}
Button(action: {
dm.loadRoster()
}, label: {
Text("parse Table Roster")
})
Button {
prt(array: dm.arrayDuty)
} label: {
Text("show")
}
}
}
func prt(array: [Duty]) {
for item in array {
print(item.dutyDay)
}
}
}
当我按下加载名册按钮时,数组中正确填充了数据,列表自动更新,但显示错误的数据。我不知道为什么我的列表总是显示相同的第一个值,而不是数组中的每个值。
1条答案
按热度按时间jfgube3f1#
在你的Dm中为arrayDuty使用
@Published
属性,并使你的Duty
模型符合Hashable协议:在ContentView中为Dm创建一个@StateObject:
内容视图设置: