如何在后台更新核心数据后自动刷新swiftUI视图,而无需调用onAppear方法?
struct Page1: View {
@FetchRequest(entity: Word.entity(), sortDescriptors: [])
var wordsFromCoreData: FetchedResults<Word>
@State var isPresenting = false
var body: some View {
NavigationView{
VStack{
NavigationLink(destination: Page2()){
Text("Add")
}
List(wordsFromCoreData, id: \.self){item in
WordRowView(word:item)
}.navigationBarTitle(Text("English Words"))
}
}
}
}
是的,我认为@FetchRequest
将帮助我在我的Page1 出现
但是,如果我使用NavigationLink
或.sheet
进入Page2,我认为swift不会调用onAppear。
因此,如果我转到第2页,执行一些“核心数据”操作,例如从Internet上获取图像,那么我将返回第1页,它从不显示数据,但该数据实际上已存在于“我的核心数据”中。因此,这意味着Page1在这种情况下不会刷新数据。
另一种情况很好,例如,我将Page2设置为另一个TabView
而不是NavigationLink(A Detail View)
,当我返回Page1时,视图已刷新。
但是我更喜欢NavigationLink
完成我的工作。那么,有什么方法可以在后台更新核心数据后自动刷新swiftUI视图吗?