我在 SwiftUI 的一个问题上苦苦挣扎了好几个小时。
这是我的问题的简化示例:
class Parent: ObservableObject {
@Published var children = [Child()]
}
class Child: ObservableObject {
@Published var name: String?
func loadName() {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
// Async task here...
self.objectWillChange.send()
self.name = "Loaded name"
}
}
}
struct ContentView: View {
@ObservedObject var parent = Parent()
var body: some View {
Text(parent.children.first?.name ?? "null")
.onTapGesture {
self.parent.objectWillChange.send()
self.parent.children.first?.loadName() // does not update
}
}
}
我有一个 ObservableObject(父)存储一个 @Published 的 ObservableObjects 数组(子)。
问题是,当通过数组中一个对象上的异步任务更改名称属性时,视图不会更新。
你有什么主意吗 ?
非常感谢尼古拉斯