J'écris une application iPhone qui va chercher un fichier XML, l'analyse, puis enregistre les objets analysés dans les données de base. Tout fonctionne jusqu'au point où j'enregistre les objets dans Core Data. J'imagine que cela a quelque chose à voir avec la façon dont je référence le ManagedObjectContext mais je n'arrive pas à comprendre où je vais mal. J'ai regardé le SO question here mais je suis toujours perplexe. J'ai suivi le Core Data Tutorial for iPhone et j'ai réussi, mais j'ai l'impression d'avoir rencontré un problème en appliquant ce que j'ai appris à mon propre projet. Mon application est différente dans la structure de l'exemple dans le tutoriel.Comment puis-je donner mon code d'accès à mon ManagedObjectContext?
Mon application est un UITabBar avec trois sous-vues, appelons-les A, B et C et un fichier de classe distinct qui est juste utilisé pour extraire le XML appelé XMLParser. Cette classe de récupération XML est appelée en appuyant sur un bouton dans ViewController 'C'.
Lorsque j'analyse le code XML, j'essaie de sauvegarder les objets analysés à la volée dans les données de base. Il échoue à la première tentative avec l'erreur suivante:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:
'+entityForName: could not locate an NSManagedObjectModel for entity name 'Branch''
Dans mon délégué app, je le code suivant relatif à ma classe xmlparser:
En haut du fichier AppDelegate.m
#import "XMLParser.h"
intérieur applicationDidFinishLaunching
NSManagedObjectContext *context = [self managedObjectContext];
XMLParser *xmlparser = [[XMLParser alloc] init];
xmlparser.managedObjectContext = context;
[xmlparser release];
Au lieu de coller chun massif ks de code dans la question en ce moment, si quelqu'un peut voir quelque chose avec ce que j'ai écrit jusqu'ici alors s'il vous plaît demander plus de code ou une meilleure explication.
Edit: J'ai vérifié tout dans la réponse acceptée pour this SO question et j'ai tout cela configuré
Merci
EDIT
je me rends compte maintenant que parce que j'instancier en fait un objet XMLParser sur pression d'un bouton dans ViewController C, l'ensemble managedObjectContext dans applicationDidFinishLaunching ne s'applique pas à l'objet nouvellement instancié. Alors, comment donner l'accès XMLParser à mes applications ManagedObjectContext lorsque je l'instancie après avoir appuyé sur le bouton sur mon ViewController?
@ gerry3 Je vois ce que tu veux dire, je pensais qu'il était étrange aussi, mais c'est ce que le tutoriel Apple ne aussi, voir ici (http://developer.apple.com/IPhone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Articles/02_RootViewController.html#//apple_ref/doc/uid/TP40008305-CH104-SW11) – conorgriffin
Ce n'est pas ce que dit le didacticiel. Votre analyseur n'analysera pas tant que vous n'aurez pas envoyé le message d'analyse. En effet, vous avez créé un analyseur, puis l'avez libéré sans rien faire. – Giao
OK, je pense qu'il y a un problème séparé ici. Maintenant, j'ai pris du recul, je me rends compte que l'analyseur que j'instancie dans applicationDidFinishLaunching, et dont j'ai défini le managedObjectContext, n'est pas la même instance que celle qui sera appelée plus tard en appuyant sur un bouton de ViewController C Parce que, sur pression de ce bouton, j'instancie un nouvel objet. Je vais mettre à jour la question – conorgriffin