Base de Données soutenu UITableView avec l'indexation

Je suis en train de mettre en œuvre une Base de Données soutenu UITableView qui prend en charge l'indexation (par exemple: les caractères qui apparaissent sur le côté, et les en-têtes de section qui vont avec). Je n'ai pas de problèmes lors de la mise en œuvre du présent sans Base de Données à l'aide de:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;

Je n'ai aucun problème de mise en œuvre d'une UITableView qui est soutenu par la Base de Données sans l'aide de l'indexation.

Ce que j'essaie de savoir comment élégamment combiner les deux? Évidemment, une fois que vous index et re-contenu de la section, vous ne pouvez plus utiliser la norme NSFetchedResultsController pour récupérer des choses à un index donné le chemin d'accès. Je suis donc ranger mon indice de lettres dans un NSArray et mon contenu indexé dans un NSDictionary. Tout cela fonctionne très bien pour l'affichage, mais j'ai quelques vrais maux de tête quand il s'agit de l'ajout et de la suppression de lignes, comment, concrètement, pour mettre en œuvre correctement ces méthodes:

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller;

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath;

- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type;

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller;

Parce que l'indice des chemins qu'il est de retour m'ont aucune corrélation avec ceux de la base de données. J'ai ajouter simplement la reconstruction de mon index, NSArray et NSDictionary lorsque l'utilisateur ajoute une ligne, mais faire la même chose quand ils supprimer une panne de l'ensemble de l'application.

Est-il un simple modèle/exemple qui me manque ici pour faire tout ce travail correctement?

Edit: Juste pour clarifier, je sais que le NSFetchedResultsController est-ce à la sortie de la boîte, mais ce que je veux est de reproduire la fonctionnalité comme l'application Contacts, où l'indice est la première lettre du prénom de la personne.

OriginalL'auteur rustyshelf | 2009-10-21