views:

99

answers:

1

Setup:

I have several UITableViewControllers (tvc) that all instantiate a separate NSFetchedResultsController (frc). All these frc-s, though, use the same ManagedObjectContext (moc).

Scenario:

Sometimes, from one of the tvc-s, I launch some background process to update data. The background process updates the data in a separate thread and finally calls [moc mergeChangesFromContextDidSaveNotification:] on the main thread. These changes should then propagate to frc, and [frcDelegate controllerDidChangeContent:] should be called. This works fine... but only for the frcDelegate whose associated tvc initiated the update. (all the tvc-s are acting as frcDelegate for their frc.)

Expected behavior:

since all the frc-s are bound to the same moc, all the frc-s should pick up the changes, and [frcDelegate controllerDidChangeContent:] should be called for all of them.

Actual behavior:

only one [frcDelegate controllerDidChangeContent:] gets called.

Why am I seeing actual behavior instead of expected? How should I debug this? Or is this the correct behavior?

+1  A: 

This is the expected behavior.

Each fetched results controller will only observe changes in the entity that is specified in its fetch request. Presumably you are only modifying objects of the entity that corresponds to the controller that initiated the update.

gerry3