Core data 更新CoreData中的数据及其在视图中的值

Core data 更新CoreData中的数据及其在视图中的值,core-data,swiftui,Core Data,Swiftui,我不熟悉Swift和CoreData的开发。我一直在努力使用下面的代码,该代码显示了一个视图,其中包含一些与CoreData一起存储的学生相关的信息。视图中显示的“提问”按钮更新student.questionAskedClass,但视图不更新其值 该值显然是在内部更新的,因为如果我重新启动应用程序,我可以看到该值已经更新。但我想看它的现场更新 谢谢你的帮助, 弗朗索瓦 您正在更改某个CoreData对象的属性。但是,这不会刷新视图,因为您仅在person实例上使用来显示数据。您需要刷新视图以显

我不熟悉Swift和CoreData的开发。我一直在努力使用下面的代码,该代码显示了一个视图,其中包含一些与CoreData一起存储的学生相关的信息。视图中显示的“提问”按钮更新student.questionAskedClass,但视图不更新其值

该值显然是在内部更新的,因为如果我重新启动应用程序,我可以看到该值已经更新。但我想看它的现场更新

谢谢你的帮助, 弗朗索瓦


您正在更改某个CoreData对象的属性。但是,这不会刷新视图,因为您仅在person实例上使用来显示数据。您需要刷新视图以显示更新

只需使用一个虚拟的
@State
,您将在更改后切换它

@State var updateView : Bool = false
您需要在视图中使用它,因此只需将其添加到某个位置:

  Text("\(student.firstName)" + (self.updateView ? "" : "").font(.headline).foregroundColor(Color.black)
然后切换它:

Button(action: {
    self.askQuestion()
    self.updateView.toggle()
}) {
    Text("Ask question")
}
你所需要的只是

struct StudentView: View {
  @Environment(\.managedObjectContext) var managedObjectContext

  @ObservedObject var student: Student     // << here !!
struct StudentView:View{
@环境(\.managedObjectContext)变量managedObjectContext

@ObservedObject var student:student//您的学生变量需要是@ObservedObject才能动态更新。
struct StudentView: View {
  @Environment(\.managedObjectContext) var managedObjectContext

  @ObservedObject var student: Student     // << here !!