2010-10-21 15 views
0

On m'a donné un cadre écrit par d'autres programmeurs pour accéder aux données de base. Dans cette situation, je reçois un NSFetchedResultController préchargé que j'ai besoin de filtrer pour afficher une partie de ses données.iphone Données de base - Filtrage NSFetchedResultController?

Voici ce que j'ai essayé:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category==%@", @"current"]; 
[NSFetchedResultsController deleteCacheWithName:@"Root"]; 
[myResultController.fetchRequest setPredicate:predicate]; 
myResultController.fetchedObjects = [myResultController.fetchedObjects filteredArrayUsingPredicate:predicate]; 

et je reçois une erreur disant que l'objet ne peut pas être réglé, soit la méthode setter manque, ou l'objet est en lecture seule.

Alors, quelle est la meilleure façon de filtrer un NSFetchResultController qui est déjà chargé, sans avoir à stocker les données filtrées dans un autre tableau?

Répondre

5

fetchedObjects est en lecture seule. Vous ne pouvez pas le configurer manuellement.

Ce que vous devez faire est d'effectuer un nouveau chargement avec votre myResultController.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category==%@", @"current"]; 
[NSFetchedResultsController deleteCacheWithName:@"Root"]; 
[myResultController.fetchRequest setPredicate:predicate]; 
//myResultController.fetchedObjects = [myResultController.fetchedObjects filteredArrayUsingPredicate:predicate]; 
[myResultController performFetch:nil]; 
+0

merci je vais essayer – aryaxt