Core Data, plusieurs 'stores' pour une application 'documenBased'
frOM
Membre
Très amateur et surtout très intermittent dans la pratique de cocoa, je suis à la recherche de code (mes bases théoriques sont très faibles... )pour une application que j'ai en projet.
Je suis en train de faire une application test, très simple, pour cela. Elle est construite sur le modèle : question/réponse. Pour l'instant, ce que je cherche à obtenir, c'est d'enregistrer les questions dans le bundle, et les réponses dans le document " comme par défaut.
J'avoue que je suis un peu, beaucoup, absolument perdu... La seule chose que je suis arrivé à faire (avec un bout de code trouvé) et qui marche un peu est ceci :
Cela marche à la création du document (chacun va à sa place, les questions 'inBundle', les réponses 'inDocument' " mais pas à la réouverture du document où tout rejoint alors le store par défaut du document [sa 'configuration' n'est pas utilisée]).
L'application exemple iClass montre bien comment faire deux 'stores' mais elle n'est pas document-based et je n'arrive pas à voir comment la transformer.
J'avais pensé que :
- (BOOL)configurePersistentStoreCoordinatorForURL:(NSURL*)url ofType:(NSString*)fileType modelConfiguration:(NSString*)configuration storeOptions:(NSDictionary*)storeOptions error:(NSError**)error...
pouvait être utilisé mais je n'arrive à rien de bien (où, quand, comment l'utiliser ????).
Bref, toutes aides, suggestions, etc. sont les bien venues...
Je suis en train de faire une application test, très simple, pour cela. Elle est construite sur le modèle : question/réponse. Pour l'instant, ce que je cherche à obtenir, c'est d'enregistrer les questions dans le bundle, et les réponses dans le document " comme par défaut.
J'avoue que je suis un peu, beaucoup, absolument perdu... La seule chose que je suis arrivé à faire (avec un bout de code trouvé) et qui marche un peu est ceci :
- (void)windowControllerDidLoadNib:(NSWindowController *)windowController <br />{<br /> [super windowControllerDidLoadNib:windowController];<br /> // user interface preparation code<br /> <br /> NSPersistentStoreCoordinator *documentStoreCoordinator = [[self managedObjectContext] persistentStoreCoordinator];<br /> NSError *error;<br /> <br /> NSString *applicationSupportFolder = [self applicationSupportFolder]; // renvoie le bundle<br /> NSURL *inBundleUrl = [NSURL fileURLWithPath:[applicationSupportFolder stringByAppendingString:@"question.xml"]];<br /> <br /><br /> id inBundleStore = [documentStoreCoordinator addPersistentStoreWithType:NSXMLStoreType configuration:@"inBundle" URL:inBundleUrl options:nil error:&error];<br /> if (inBundleStore == nil) <br /> // message d'erreur<br /> {<br /> // New store has been succesfully configured.<br /> }<br /><br />}
Cela marche à la création du document (chacun va à sa place, les questions 'inBundle', les réponses 'inDocument' " mais pas à la réouverture du document où tout rejoint alors le store par défaut du document [sa 'configuration' n'est pas utilisée]).
L'application exemple iClass montre bien comment faire deux 'stores' mais elle n'est pas document-based et je n'arrive pas à voir comment la transformer.
J'avais pensé que :
- (BOOL)configurePersistentStoreCoordinatorForURL:(NSURL*)url ofType:(NSString*)fileType modelConfiguration:(NSString*)configuration storeOptions:(NSDictionary*)storeOptions error:(NSError**)error...
pouvait être utilisé mais je n'arrive à rien de bien (où, quand, comment l'utiliser ????).
Bref, toutes aides, suggestions, etc. sont les bien venues...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Dans cet exemple, l'auteur explique comment enregistrer un document Core Data dans un bundle:
http://acaro.wordpress.com/2007/07/09/packages-and-core-data-documents/
Il y a des similitudes.
Je pense qu'il te faut deux Managed Object Contexts (un par persistent store).
Les packages ne manquent eux aussi pas d'humour... Je signale (ou rappelle) qu'il existe un bon exemple, plutôt pédagogique (c'est-à -dire : une seule difficulté à la fois, contrairement aux habitudes d'Apple) sur core data et les packages :
http://developer.apple.com/samplecode/PersistentDocumentFileWrappers/index.html#//apple_ref/doc/uid/DTS40008763