2010-07-02 2 views
1

J'ai une vue de table gérée par un NSFetchedResultsController. J'utilise le code standard fourni par Apple dans mon TableViewController. Mon prédicat récupère des objets en fonction de leur nom. Tout semble bien fonctionner quand il s'agit d'ajouter/supprimer des objets en utilisant le bouton 'edit'. Si je change programme le nom d'un objet, les choses fonctionnent aussi bien à moins les résultats du changement de nom de l'objet en mouvement la table, dans ce cas, je reçois cette erreur:NSFetchedResultsController: exception lorsque l'objet passe de l'index supérieur à l'index inférieur

Serious application error. An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:. *** -[NSMutableArray objectAtIndex:]: index 1 beyond bounds [0 .. 0] with userInfo (null)

Dire que j'ai trois objets nommés A, C et D. Si je renommer D en B, l'application se bloque. Si je renommer C en B, tout est cool.

Que se passe-t-il ici?

Répondre

1

L'utilisation de la sous-classe SafeFetchedResultsController de Deusty de NSFetchedResultsController peut aider à gérer les opérations de mise à jour et de déplacement de lignes difficiles qui déclenchent la classe d'Apple, provoquant ces exceptions.

+0

Cela ne semble pas avoir aidé :(mais merci pour la suggestion.J'ai décidé de simplement recharger la tableVoir chaque fois que le contenu change (je n'ai jamais plus de 7 ou 8 lignes de toute façon ...) – Garry

+0

'SafeFetchedResultsController' résoudre beaucoup de problèmes, mais pas tous malheureusement.Modifier l'utilisation de 'reloadData' au lieu des animations semble résoudre la plupart des problèmes. –

0

Le message d'erreur indique que l'exception provient de votre code et que vous avez appelé objectAtIndex: avec un index non valide. Il semble que vous supprimez l'objet de votre tableau, puis essayez de le récupérer avant de l'insérer dans le tableau.

Questions connexes