2010-10-26 4 views
0

J'ai une application basée sur la navigation qui utilise des données de base pour le stockage. Le schéma de cette section particulière est la suivante:Problème avec l'application de plantage NSManagedObjectContext

Scène hasMany Tâches hasMany DeviceCommands

tâches ont aussi beaucoup d'autres objets en plus DeviceCommands (comme DelayCommands etc), mais cela dépasse la portée du problème (je pense) .

DeviceCommands lien à un objet parent comme suit:

Appareil hasMany DeviceCommands

Maintenant, l'utilisateur peut créer une nouvelle tâche, qui apparaît une vue modale pour sélectionner le périphérique. Lorsque vous sélectionnez un périphérique, une vue de table est poussée avec les commandes de périphérique appartenant au périphérique. Lorsque vous sélectionnez une DeviceCommand, elle l'affecte à la tâche avec task.deviceCommand = device.deviceCommand. Pour une raison quelconque, et cela se produit uniquement dans cette section de l'application, l'application se bloque avec la sortie suivante dans la console:

2010-10-26 15: 37: 33.337 livOS4 [47226: 207] Erreur d'application grave. Une exception a été détectée pendant le traitement de la modification des données de base. C'est généralement un bug dans un observateur de NSManagedObjectContextObjectsDidChangeNotification. * - [NSMutableArray objectAtIndex:]: indice 35 au-delà des limites [0 .. 0] avec userInfo (null)

Index 35 fait référence à l'indice de la DeviceCommand dans le UITableView et NSFetchedResultsController. Grâce à un processus d'essais et d'erreurs, j'ai découvert que NSMutableArray est le tableau avec les périphériques. Si j'ajoute un nouveau périphérique à l'application, les limites du tableau sont [0 .. 1].

J'ai ajouté un observateur pour NSManagedObjectContextObjectsDidChangeNotifications mais il se bloque avant que l'observateur ne reçoive quoi que ce soit.

Quelqu'un peut-il aider ou offrir des conseils pour résoudre ce problème?

Répondre

-2

Correction ce matin. Il s'est avéré être un problème avec la façon dont j'assignais le délégué NSFetchedResultsController.

+16

Je sais que c'est un ancien poste, mais pouvez-vous développer exactement ce que vous avez fait? – chris

+1

Pourquoi cette réponse a-t-elle été mise à jour ?? – Martin

3

J'ai les mêmes problèmes avec NSFetchedResultsController.

problème disparaît alors j'ajouter à mon viewController

- (void)dealloc 
{ 
    self.fetchedResultsController.delegate = nil; 
    self.fetchedResultsController = nil; 
} 
Questions connexes