J'écris une application avec deux tableaux sur un seul écran. Le tableau de gauche est une liste de dossiers et le tableau de droite montre une liste de fichiers. Lorsque l'on tape sur une ligne à gauche, le tableau de droite affiche les fichiers appartenant à ce dossier.
J'utilise Core Data pour le stockage. Lorsque la sélection du dossier change, le prédicat de récupération du NSFetchedResultsController de la table de droite change et effectue une nouvelle récupération, puis recharge les données de la table. J'ai utilisé l'extrait de code suivant :
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"list = %@",self.list];
[fetchedResultsController.fetchRequest setPredicate:predicate];
NSError *error = nil;
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
[table reloadData];
Cependant, les résultats de la recherche sont toujours les mêmes. . J'ai vérifié NSLog'ed "predicate" avant et après la récupération, et ils étaient corrects avec les informations mises à jour. Les résultats de la recherche restent les mêmes que ceux de la recherche initiale (lorsque la vue est chargée).
Je ne connais pas très bien la façon dont Core Data récupère les objets (y a-t-il un système de mise en cache ?), mais j'ai déjà fait des choses similaires (modification des prédicats, nouvelle récupération des données et rafraîchissement de la table) avec des vues de table unique et tout s'est bien passé.
Si quelqu'un pouvait me donner un indice, je lui en serais très reconnaissant.
Merci d'avance.