Existe-t-il un moyen de définir dynamiquement le ou les descripteurs de tri pour un contrôleur de résultats récupéré sur iOS? Par exemple, j'ai besoin que les résultats de données de base me soient renvoyés triés en fonction du réglage d'un contrôle segmenté dans la barre de titre de navigation. L'utilisateur peut soit cliquer sur le contrôle segmenté pour trier par Prix ou Priorité. J'ai ensuite besoin que le contrôleur de résultats récupéré retourne et affiche les informations de données de base triées en sections en fonction de cette valeur de contrôle segmentée.Modifier dynamiquement le descripteur de tri pour les résultats obtenus Contrôleur
Je sais comment définir les descripteurs de tri initialement, mais je ne sais pas comment le changer/le mettre à jour dynamiquement. Puisque la fonction - (NSFetchedResultsController *)fetchedResultsController
est paresseuse, ne retournera-t-elle pas toujours la frc qui a été créée la première fois (retournant ainsi le paramètre de descripteur de tri initial)? Est-ce que je ferais quelque chose comme stocker la valeur de contrôle segmentée dans les sharedPreferences, et puis quand il est changé, mettre mon fetchedResultsController à zéro pour qu'un nouveau sera généré? Puis, dans la fonction fetchedResultsController, je peux créer mon sortDescriptor en fonction de ce paramètre sharedPreferences?
ah Marcus, votre tutoriel de flux dans PragProg est l'un des premiers articles que j'ai lus sur NSFetchedController, alors merci pour la réponse et cet article. Donc, c'est assez facile de relâcher simplement mon contrôleur récupéré et de le mettre à zéro, et permettre au ViewController de le régénérer en fonction du contrôle segmenté. Cela semble assez facile. Merci. – cpjolicoeur
est-il juste d'appeler '[self.tableView reloadData]' lors de l'utilisation d'un contrôleur de résultats récupérés, ou existe-t-il une autre méthode requise pour recharger des données via une FRC? – cpjolicoeur
Une fois que vous avez appelé '-performFetch:' sur le 'NSFetchedResultsController', vous pouvez appeler' -reloadData' sur la table. Rien d'autre n'est requis. –