NSManagedObjectContext's processPendingChanges() is not called at the end of the RunLoop

I have a SwiftUI view which updates my NSManagedObject subclass object after finishing dragging.

I've noticed that NSFetchedResultsController is not reporting updates at the end of the run-loop during which the change occurred. It takes a few moments or a save() to changes being noticed.

To debug it, I've swizzled processPendingChanges method of NSManagedObjectContext and logged when it's called. To my surprise, I've noticed it's not always called at the end of the run loop.

What am I missing here? Why is processPendingChanges() not called? Should I call it manually on my own after every change? For reference: I'm testing on macOS in the AppKit app. The NSManagedObjectContext is created by NSPersistentDocument.

Here's how my View's code look like:

// `myItem` is my subclass of NSManagedObject

Item()
   .gesture(
      DragGesture(minimumDistance: 0, coordinateSpace: CoordinateSpace.compositionGrid)
         .onChanged({ _ in 
            // ...
         })
         .onEnded({ (dragInfo) in
            // :-(
            // This change is not always noticed by NSFetchedResultsController
            // 
            myItem.someProperty = dragInfo.location
         })
   )

Edit - Sample Project

I've been able to isolate the issue in the sample project: Github Repo

NSManagedObjectContext's processPendingChanges() is not called at the end of the RunLoop
 
 
Q