title: Best way to implement UICollectionViewDataSource protocol?
body: <p>I have theoretical question.</p>
  
  <p>Currently my app is using <code>UICollectionView</code> as a way to display objects list. <code>UIViewController</code>, that contains <code>UICollectionView</code> as subview, implements <code>UICollectionViewDelegate</code> protocol and acts as delegate and datasource. Datasource uses <code>NSFetchedResultsController</code> to provide data;</p>
  
  <p>In my opinion this is not the best way to implement datasource, and implementing it in separate class looks way better idea. But the issue it that datasource depends on search parameters in <code>UITextField</code>, and some other buttons selections, so every time when user types text into search field  or press the any of "sorting" buttons I should update datasource (in particular fetchRequest in <code>NSFetchedResultsController</code>).</p>
  
  <p><strong>So, finally, my question</strong>: Is there any "best practices" of implementing datasources that depends on external parameters? Should I create separate class for datasource of leave it the way it is now? If implementing datasource as separate class - should I create datasourcedelegate for calling self-made delegate methods on delegate when datasource was updated or there is some other workarounds for this problem (I'm not considering using notifications on datasource update because as for me notifications mechanism is more global solution then I need here)? </p>
  
  <p>I'm not looking for the fastest way, I just want to find out the rightest theoretical way of implementation. </p>
  
  <p>Thank you all in advance :)</p>