Recently I have integrated Core Data to my SwiftUI App. Just to simplify, I have two views:
- TimerListView: fetch data from Core Data and show the list
- TimerDetailView: show Timer details and update data
Where
struct TimerListView: View {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(
sortDescriptors: [NSSortDescriptor(keyPath: \Timer.id, ascending: true)],
animation: .default)
private var timers: FetchedResults<Timer>
var body: some View {
NavigationView{
List {
ForEach(timers) { timer in
NavigationLink(destination: TimerDetailView(timer: timer)) {
TimerCardView(timer: timer)
}
}
}
}
[...]
}
}
and
struct TimerDetailView: View {
@Environment(\.managedObjectContext) private var viewContext
@ObservedObject var timer: Timer
}
Outcomes:
- Data is correctly updated in Core Data (if I close and reopen the App data is correctly updated)
- When from TimerDetailView I turn back to TimerListView (after an update) the list doesn't show the updated data
Why the list doesn't show updated data automatically?
Thanks!