1

Quelle est la différence entre les éléments get de Core Data avec FetchResultController ou ManagedObjectContext ??Diférence entre get Object utilisant FetchResultController et 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]; 

Répondre

1

Le point derrière l'utilisation d'un NSFetchedResultsController par opposition à un NSFetchRequest est la surveillance de vos données et les méthodes pratiques lorsque vous travaillez avec des sections. Lorsque vous travaillez avec un NSFetchRequest, vous devez déterminer les sections vous-même et vous devez réécrire vos données lorsque quelque chose change.

En traitant le NSFetchedResultsController, il déterminera vos sections, mettra en cache les résultats (en faisant une deuxième requête pour ces données presque instantanées), et fournira des méthodes pratiques pour votre NSTableView. Enfin, lorsque vos données changent, le NSFetchedResultsController vous en informera par l'intermédiaire de ses délégués.

Les données internes à ces deux éléments seront les mêmes. C'est la gestion de l'état de ces données qui fait la différence.

+0

Merci l'homme! .... – wal

0

L'objet NSFetchedResultsController vous dira quand les objets de votre changement de requête. Fournissez simplement un objet délégué pour recevoir les appels (voir le document doc pour le protocole NSFetchedResultsControllerDelegate). Il vous fournit également la gestion de section qui est utile si vous souhaitez afficher les données dans une vue de table.

+0

Merci. Mais les tableaux retournés par ces deux méthodes sont les mêmes, n'est-ce pas? Les questions sont à ce sujet: la différence sur le retour. J'ai testé après avoir demandé et je pense que c'est. – wal

Questions connexes