2010-10-09 8 views
14

J'ai une belle application iPhone qui fonctionne avec les données de base. J'utilise un NSFetchedResultsController/NSManagedObjectContext comme décrit dans divers didacticiels.Comment obtenir toutes les entrées d'un NSFetchedResultsController/NSManagedObjectContext?

Maintenant, je veux étendre mon application et ajouter quelques fonctionnalités supplémentaires. Le problème que j'ai besoin de construire un tableau avec des objets qui ont des informations à partir de mes données.

Je dois d'une manière ou d'une autre obtenir une liste de toutes les données que j'ai dans mon contexte.

Je pensais que je pourrais faire une approche similaire à la façon dont j'obtiens les données pour UITableView.

id <NSFetchedResultsSectionInfo> sectionInfo = [[_fetchedResultsController sections] objectAtIndex:section]; 

Celui-ci échoue, car j'ai effectivement plusieurs sections. Maintenant, je pourrais passer par toutes les sections et faire mon propre indexPath d'accéder à mes données avec:

MyData *info = [_fetchedResultsController objectAtIndexPath:indexPath]; 

Mais je pense qu'il ya une autre façon que je viens pas encore trouvé et j'espère que quelqu'un peut me aider.

Merci beaucoup.

Répondre

40

cherchez-vous simplement une méthode pour obtenir tous les objets de votre NSFetchedResultsController? Si oui, utilisez ceci.

NSArray *fetchedData = [_fetchedResultsController fetchedObjects]; 

si vous avez plus de 1 entité construire une fetchrequest pour chaque entité. Quelque chose comme ça devrait vous donner tous vos objets.

NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:self.entityName inManagedObjectContext:self.managedObjectContext]; 
[request setEntity:entity]; 
NSError *error; 
NSArray *results = [self.managedObjectContext executeFetchRequest:request error:&error]; 
1

Si vous voulez obtenir tous les objets pour une section particulière, vous pouvez le faire:

NSArray *sectionObjects = [_fetchedResultsController.sections[section_number] objects]; 
Questions connexes