核心数据在后台更新后如何自动刷新swiftUI视图?

时间:2019-12-09 14:33:05

标签: swift core-data background swiftui

如何在后台更新核心数据后自动刷新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视图吗?

0 个答案:

没有答案