2010-05-20 3 views
0

Je crée une application agrégateur de nouvelles qui récupère un flux xml toutes les 4 minutes. Une fois le fichier xml chargé, j'efface tout en supprimant tous les objets de la base de données, puis enregistrez les nouveaux objets dans la base de données. J'appelle ensuite [self.tableViewSection reloadData]; pour recharger la tableView. C'est quand j'ai un problème. Dès que le code arrive à une section où j'accéder au nouveau contenu [[managedObject valueForKey:@"event_text"] description] il échoue avec:iPad --- problème managedObject lorsque [self.tableViewSection reloadData]

*** en raison de l'application Mettre fin exception uncaught « NSObjectInaccessibleException », raison: « CoreData ne pouvait pas répondre à un faute pour « 0x4b3f6a0 « »

maintenant du flux que j'ai décrit au-dessus, il me semble étrange que le tableView est rempli correctement la prochaine fois que je lance l'application, avec les données « nouveau »j'allé chercher dans la session précédente. Donc, ce n'est pas que les données sont corrompues, mais il me semble que quelque chose ne va pas quand je récupère le managedObject après avoir sauvegardé de nouvelles données.

Gardez aussi à l'esprit que cette application fonctionne très bien sur l'iPhone, c'est l'iPad qui me donne ce problème.

Répondre

0

J'ai trouvé la solution, vous devez indiquer à fetchedController de faire à nouveau performFetch avant de recharger les nouvelles données.

-(void)reloadFetchController 
{ 
    NSError *error = nil; 
    if (![[self fetchedResultsController] performFetch:&error]) 
    { 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 
} 

Quelqu'un sait pourquoi ce qui est différent entre iPhone OS3.0 & 3.2

0

Pouvez-vous donner des détails sur le traitement de suppression?

Si la suppression est sur le même contexte que le contrôleur de résultats récupérés est attaché, il semble que vous n'êtes pas sauver le contexte après la suppression. Si vous le faisiez, les modifications seraient traitées et le contrôleur de résultats récupérés se mettrait à jour, reflétant la suppression via les méthodes de délégation.