Como configurar corretamente o NSFetchedResultsController

Eu estou colocando um NSFetchedResultsController em meu código para que eu obtenha o corte automático dos dados da minha tabela.

Então, estou executando um teste para garantir que tudo funcione corretamente. Eu tenho uma única entidade Book na minha loja persistente. Vou primeiro fazer a busca do jeito antigo, então vou tentar usar o NSFetchedResultsController. A diferença entre os dois blocos de código é de apenas 2 linhas.

Códigosem NSFetchedResultsController:

 NSFetchRequest *request = [[NSFetchRequest alloc] init];
 NSEntityDescription *entity = [NSEntityDescription entityForName:kBookEntityName inManagedObjectContext:self.managedObjectContext];
 [request setEntity:entity];

 NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:NO];
 NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
 [request setSortDescriptors:sortDescriptors];
 [sortDescriptor release];
 [sortDescriptors release];

  //The following 2 lines will be replaced by the NSFetchedResultsController
 NSMutableArray *mutableFetchResults = [[[self.managedObjectContext executeFetchRequest:request error:nil] mutableCopy] autorelease];
 Book *result = (Book*)[mutableFetchResults objectAtIndex:0];

 NSString* title = [result valueForKey:@"title"];
 NSString* priority = [result valueForKeyPath:@"priority.name"];


 [request release];

Agora eu substituo nas linhas pelo NSFetchedResultsController:

NSFetchedResultsController* fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"title" cacheName:@"BookList"];                                                                                                                                                                                                                                                                                                           

Book *result = (Book*)[fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];

Parece bem cortada e seca. O primeiro bloco de código busca corretamente a entidade do livro único. O código com o NSFetchedResultsController, no entanto, não. Em vez disso, retorna nulo.

Minha pergunta é: estou configurando adequadamente o NSFetchedResultsController neste exemplo?

(note que a propriedade fetchedObjects do NSFetchedResultsController também é nula)

questionAnswers(2)

yourAnswerToTheQuestion