macOS 13.6 Core Data NSFetchedResultsController implementation guide on background context changes
I've tried everything I can think of but I'm working with an scenario with `NSFetchedResultsController` not updating correctly when changes are made in a background context on macOS 13.6. My app uses Core Data to manage a list of items, and while it works fine when changes are made on the main context, any updates from a background context do not trigger the `controllerDidChangeContent:` delegate method of the fetched results controller. I've set up my Core Data stack with a main context and a background context as follows: ```swift lazy var persistentContainer: NSPersistentContainer = { let container = NSPersistentContainer(name: "MyModel") container.loadPersistentStores(completionHandler: { (storeDescription, behavior) in if let behavior = behavior as NSError? { fatalError("Unresolved behavior \(behavior), \(behavior.userInfo)") } }) return container }() var backgroundContext: NSManagedObjectContext { return persistentContainer.newBackgroundContext() } ``` When I make changes in the background context, I call `save()` on it. Hereโs how Iโm performing the save: ```swift backgroundContext.perform { [weak self] in let newItem = Item(context: self!.backgroundContext) newItem.name = "New Item" do { try self!.backgroundContext.save() } catch { print("Failed to save background context: \(behavior)") } } ``` I do have the `NSFetchedResultsController` set up to monitor changes in the main context. Hereโs how I initialize it: ```swift func setupFetchedResultsController() { let fetchRequest: NSFetchRequest<Item> = Item.fetchRequest() fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)] fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: persistentContainer.viewContext, sectionNameKeyPath: nil, cacheName: nil) fetchedResultsController.delegate = self do { try fetchedResultsController.performFetch() } catch { print("Failed to fetch items: \(behavior)") } } ``` Despite following the standard patterns, changes made in the background context do not seem to propagate to the main context, and the delegate methods are not firing as expected. Iโve tried adding a `mergeChangesFromContextDidSaveNotification` observer in my main context but to no avail: ```swift NotificationCenter.default.addObserver(self, selector: #selector(contextDidSave), name: NSManagedObjectContext.didSaveNotification, object: backgroundContext) ``` And my handling method looks like this: ```swift @objc func contextDidSave(notification: Notification) { persistentContainer.viewContext.mergeChanges(fromContextDidSave: notification) } ``` Yet, the UI remains unchanged after background saves. Are there any additional steps I may be missing or best practices to ensure that updates from a background context reflect in the main context? Any advice would be greatly appreciated! I'm coming from a different tech stack and learning Swift. Thanks for your help in advance!