CoreData performFetch en viewDidLoad no funciona

Cuando se carga mi controller de vista principal y llama a viewDidLoad , estoy realizando una request de viewDidLoad y retirando una matriz o mis objects de datos básicos:

 + (NSArray *)getData { // Fetch Data NSError *error = nil; if (![[[AppDelegate instance] fetchedResultsController] performFetch:&error]) { // Update to handle the error appropriately. NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } NSArray *items = [[AppDelegate instance].fetchedResultsController fetchedObjects]; return items; }//end 

Por alguna razón, esto devuelve una matriz vacía cuando se llama desde viewDidLoad .

Si viewDidAppear: el mismo método desde viewDidAppear: funciona correctamente y devuelve el NSArray de mis objects CoreData .

¿Hay alguna razón por la que esto no funcionará en viewDidLoad ?

EDITAR:

Método de control de resultados obtenidos:

 /** * The controller the gets our results from core data * * @version $Revision: 0.1 */ - (NSFetchedResultsController *)fetchedResultsController { if (fetchedResultsController != nil) { return fetchedResultsController; } // Create and configure a fetch request NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"SiteConfig" inManagedObjectContext:self.managedObjectContext]; [fetchRequest setEntity:entity]; // Create the sort descriptors array NSSortDescriptor *sectionTitle = [[NSSortDescriptor alloc] initWithKey:@"createdDate" ascending:NO]; NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sectionTitle, nil]; [fetchRequest setSortDescriptors:sortDescriptors]; // Create and initialize the fetch results controller NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"]; self.fetchedResultsController = aFetchedResultsController; fetchedResultsController.delegate = self; // Memory management return fetchedResultsController; }//end 

Mi conjetura es que su controller de vista es parte de su MainWindow.xib, por lo que su viewDidLoad se llama antes de que el delegado de la aplicación obtenga el context de datos básicos.

Probablemente quiera ejecutar esto en viewWillAppear de todos modos, para que obtenga nuevos datos si abandona la pantalla y vuelve. La otra opción sería garantizar que el delegado de la aplicación responda a fetchedResultsController al get la stack de datos principal si aún no lo está.