NSFetchedResultsController fetchedObjects is invalid after changes propagate from the context of a background managed object

I have NSFetchedResultsController

one that retrieves the results from the context of a managed object NSMainQueueConcurrencyType

. I also have another managed object context that has the same ones NSPersistentStoreCoordinator

from NSPrivateQueueConcurrencyType

.

All changes take place in the background context and are propagated to the main context with NSManagedObjectContextDidSaveNotification

.

I was having some problems getting certain changes to run methods NSFetchedResultsControllerDelegate

as described here , but even after fixing this issue, I found myself fetchedObjects

sometimes returning incorrect data with duplicate objects.

The only workaround I can find is to add a performFetch call to controllerDidChangeContent

:

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
    [self.tableView endUpdates];

    // fetchedObjects is incorrect unless I refetch here...
    [controller performFetch:nil];
}

      

But this seems like an ineffective hack to me. I am executing my entire query every time the data changes. I also disabled all caching in NSFetchedResultsController

for writing.

+3


source to share





All Articles