One of the common errors when using CoreData is

*** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x10123456 <x-coredata://3E1F9B1C-46BE-49F8-A3ED-1234567BF0/Event/p42>

This is what happened:

CoreData tried to access the entity, but it could not even fulfill a fault. It is most likely because the entity is no longer around, aka deleted.

Read Apple CoreData troubleshooting guide on such object life-cycle problem.

I have encountered this more than once when using NSFetchedResultsController and with Magical Record.

  • NSFetchedResultsController is using it’s a context for fetching the entities

  • Magical Record is using another context to update/delete some entities

  • When Magical Record deletes an entity, NSFetchedResultsController has the (crashing) error

The solution is to be careful with using multiple contexts and avoid the scenario.


Okay, let me give you a more meaningful workaround: If you are deleting, you might want to “mark for delete” instead. Then let NSFetchedResultsController to run at some interval to remove the marked entities.




Back to Home