Pergunta

Qual é a diferença entre os elementos Get dos dados principais com o FetchResultController ou o ManagedObjectContext ??

1) FetchResultController

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Item" inManagedObjectContext: managedObjectContext]]; 

NSSortDescriptor *sortDescriptorNameAscending = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptorNameAscending,nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptorNameAscending release];

NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Lists"]; 

2) ManagedObjectContext

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Item"  inManagedObjectContext:managedObjectContext]]; 
NSError *error = nil; 
NSArray *items = [ managedObjectContext executeFetchRequest:request error:&error]; 
Foi útil?

Solução

O ponto por trás do uso de um NSFetchedResultsController ao contrário de apenas um NSFetchRequest é o monitoramento de seus dados e os métodos de conveniência ao trabalhar com seções.

Ao lidar com apenas um NSFetchRequest Você deve determinar as seções e precisa reformar seus dados quando algo mudar.

Ao lidar com o NSFetchedResultsController, ele determinará suas seções, cache os resultados (fazendo uma segunda solicitação para esses dados quase instantâneos) e fornecerá métodos de conveniência para o seu NStableView. Finalmente, quando seus dados mudam, o NSFetchedResultsController o notificará através de seus delegados.

Os dados internos para ambos serão os mesmos. Está gerenciando o estado desses dados que é a diferença.

Outras dicas

o NSFetchedResultsController O objeto dirá quando os objetos da sua consulta mudarem. Basta fornecer um objeto delegado para receber as chamadas (consulte o documento para NSFetchedResultsControllerDelegate protocolo). Ele também fornece o gerenciamento de seção que é útil se você deseja exibir os dados em uma exibição de tabela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top