Я часами боролся за проблему со 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 (Parent), хранящий @ Опубликованный массив ObservableObjects (Child).
Проблема заключается в том, что при изменении свойства имени с помощью асинхронной задачи c для одного объекта в массиве представление не обновляется.
У вас есть идеи?
Большое спасибо, Николас