2010-01-13 3 views
1

Je travaille sur une application qui repose sur un ensemble de données pouvant être triées de différentes manières. J'ai une configuration de base de données. J'ai une requête d'extraction qui apporte tous les enregistrements. J'ai un bouton de tri sur le côté gauche du contrôleur de navigation. Cela amène une vue modale avec une table qui a mes options de tri. Lorsque vous modifiez l'option, elle ferme la vue modale. Je peux accéder à l'option sélectionnée en utilisant [[NSUserDefaults standardUserDefaults] objectForKey: @ "sortOption"].cacao iphone fetchedResultsTriage du contrôleur

Maintenant, je dois mettre à jour la requête d'extraction avec un nouveau tableau de descripteurs de tri et modifier la sectionNameKeyPath.

J'ai essayé de définir la valeur de fetchedResultsController sur zéro et d'appeler reloadData dans la vue tabulaire. Rien ne semble mettre à jour.

Des idées?

Howie

Répondre

2

a résolu mon problème!

On dirait que tout ce que je devais faire après la redéfinition de la demande d'extraction, est effectuer l'opération d'extraction et recharger les données de la table.

NSError *error = nil; 

if (![[self fetchedResultsController] performFetch:&error]) 
{ 
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); 
} 
[self.tableView reloadData]; 
+0

Eh bien, j'ai mentionné l'appel performFetch et vous étiez déjà en train de faire reloadData ... – Nimrod

+0

que vous avez fait. Je suis juste un crétin et très nouveau à ce sujet. - Merci pour les conseils. – Ward

1

Vous devriez être en mesure de changer simplement les propriétés de l'objet NSFetchRequest que vous initiallized votre NSFetchedResultsController avec, puis exécutez [resultsController performFetch:...]. Par exemple, vous pouvez modifier le tableau des descripteurs de prédicat et de tri dans le NSFetchRequest puis appeler le performFetch.

Consultez l'exemple de code CoreDataBooks d'Apple si vous avez besoin d'un exemple d'utilisation de NSFetchedResultsController.

Mise à jour

Eh, malheureusement, si vous voulez modifier la clé de section alors je pense que vous devez créer un nouvel objet NSFetchedResultsController avec la nouvelle clé de section. Toutes les propriétés de NSFetchedResultsController semblent être en lecture seule :(

+0

semble que je peux les résultats mis à jour par les cheveux, mais ta ble ne se met pas à jour. J'ai essayé d'utiliser [self.myTable reloadData], mais cela supprime simplement toutes les lignes et ne montre aucun résultat. Tout ce que je veux faire, je peux changer le tri à la volée. Comment cela peut-il être si difficile? – Ward

0

Je vous devez supprimer le cache fetchedResultsController si vous avez activé la mise en cache.

[NSFetchedResultsController deleteCacheWithName:@"MyCacheName"];