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