swift - 如何在后台更新核心数据后自动刷新 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 视图?
解决方案
推荐阅读
- mysql - MySQL在开启和关闭时间戳加上3秒之间选择最大值
- sql - 在哈希分区中使用什么算法,它可以在查看任何数据之前将数据划分为相似大小的分区
- r - 如何从 R 中的 ESRI shapefile 中提取值
- python - 在此 avr 声音代码中将音频原始文件转换为 .h 文件以供 Arduino IDE 使用的语法错误是什么
- javascript - 我应该多久访问一次 Heroku 服务器以使其保持清醒?
- c++ - 不同网络之间的套接字编程
- api - 是否可以将 Chrome 扩展程序与 Google Classroom 集成?
- typescript - 要求类使用基于泛型的参数实现方法
- vba - 如何在 Access 中使用 VB 将所有记录插入到表中
- ios - 如何在 Tableview 中使用集合视图显示内容