Давайте немного изменим модель ...
struct Class: Identifiable {
var id = UUID()
var name = ""
var students: [Student] = [Student()]
}
struct Student: Identifiable {
var id = UUID()
var name: String = ""
}
... и вместо использования @State
в не предназначенном для этого месте (потому что он предназначен для просмотра внутри представления, а не для модели), давайте представить слой модели представления как
class ClassViewModel: ObservableObject {
@Published var newClass = Class()
}
, и теперь мы можем объявить связанный вид, который ведет себя как ожидалось
struct ClassView: View {
@ObservedObject var vm = ClassViewModel()
var body: some View {
Button("Add Student") {
self.vm.newClass.students.append(Student())
print(self.vm.newClass.students)
}
}
}
Вывод:
Test [4298: 344875 ] [Агент] Получено сообщение дисплея [Test.Student (id: D1410829-F039-4D15-8440-69DEF0D55A26, имя: ""), Test.Student (id: 50D45CC7-8144-49 CC -88BE-598C890F2D4D, имя : "")]