title: NSFetchedResultController not calling controllerDidChangeContent in delegate
body: <p>There are many very similar looking questions on StackOverflow but I am asking this because almost every existing question is caused by not calling <code>performFetch</code> on the FRC.</p>
  
  <p>In this case we are calling it.</p>
  
  <pre><code>fetchedResultsController = NSFetchedResultsController(fetchRequest: StepRecord.fetchRequest(forDate: date),
                                                managedObjectContext: theMainThreadContext,
                                                  sectionNameKeyPath: nil,
                                                           cacheName: nil)
  
  fetchedResultsController.delegate = self
  
  do {
      try fetchedResultsController.performFetch()
  } catch (let error) {
      print(error)
  }
  </code></pre>
  
  <p>Then in a later function, we have something like this...</p>
  
  <pre><code>func updateScreen() {
      if fetchedResultsController.fetchedObjects.count == 0 {
          // download data and store into core data
      }
  
      // update the screen
  }
  </code></pre>
  
  <p>And we have the delegate method...</p>
  
  <pre><code>func controllerDidChangeContent(_ controller: NSFetchedResultsController&lt;NSFetchRequestResult&gt;) {
      updateScreen()
  }
  </code></pre>
  
  <p>The place that is writing into core data is definitely writing into a <code>backgroundThreadContext</code> (this is a pattern we have used several times in the app and it is working elsewhere).</p>
  
  <p>However, the delegate method is not getting called in this case.</p>
  
  <p>If we exit the screen and go back in the <code>updateScreen</code> method runs and the FRC DOES have data. So the fetch request is correct, the download is putting records in the correct place and saving properly and the update screen method is able to get those items and populate the screen.</p>
  
  <p>The only problem we are having here is that the delegate method is not being called.</p>
  
  <p>Is there something we have missed here? Like I said, we have used this same pattern in a few places and it works. It's just in this case that it isn't working.</p>
  
  <p>Let me know if there is any other code you would like to see and I'll pass it along if I can.</p>