首页 > 解决方案 > 如何在后台更新核心数据后自动刷新 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。

所以,如果我去 Page2,做一些 Core Data 的事情,比如从 Internet 获取图像,然后我回到 Page1,它从不显示数据,但数据实际上已经存在于 My Core Data 中。因此,这意味着 Page1 在这种情况下不会刷新数据。

另一种情况很好,例如,我将 Page2 设置为 anotherTabView而不是NavigationLink(A Detail View),当我返回 Page1 时,视图已刷新。

但我更喜欢NavigationLink完成我的工作。那么,有没有办法在后台更新核心数据后自动刷新 swiftUI 视图?

标签: swiftcore-databackgroundswiftui

解决方案


推荐阅读