0

I have 3 different view controllers that present same data. Basically they are presented one after another. They are presenting same entity that is fetched with NSFetchedResultsController.

I am now pondering since these are same NSFetchedResultsControllers, should I just optimize things and create one, that I pass between controllers? Is there any downside to this, or even better is this good practice?

Also just passing dataset wouldn't suffice since i want controllers to react to changes to database.

MegaManX
  • 8,766
  • 12
  • 51
  • 83

1 Answers1

1

should I just optimize things and create one, that I pass between controllers?

Yes, minimising the overhead of performing a similar fetchRequest on init of every VC is a good practice.
A better alternate instead of passing the NSFetchedResultsControllers object between VCs would be -

  • To completely abstract out all FetchedResultsControllers initialisation & delegate function implementations to a helper class christened like:
    @interface CoreDataHelper: NSObject < NSFetchedResultsControllerDelegate >

  • You'll need re-wiring of the delegate listeners & choose appropriate time for allocating & if required(not essential) deallocating of the CoreDataHelper instance

  • A singleton CoreDataHelper will serve you well enough to handle all Core Data interactions.

Segregating Model interactions away & independent from View components enables for creating loosely-coupled modules, making them reusable & succinct.

ystack
  • 1,785
  • 12
  • 23