Core Data, plusieurs 'stores' pour une application 'documenBased'

frOMfrOM Membre
00:06 modifié dans API AppKit #1
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 :

- (void)windowControllerDidLoadNib:(NSWindowController *)windowController <br />{<br />&nbsp; &nbsp; [super windowControllerDidLoadNib:windowController];<br />&nbsp; &nbsp; // 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:@&quot;question.xml&quot;]];<br />	<br /><br />	id inBundleStore = [documentStoreCoordinator addPersistentStoreWithType:NSXMLStoreType configuration:@&quot;inBundle&quot; URL:inBundleUrl options:nil error:&amp;error];<br />	if (inBundleStore == nil) <br />		// message d&#39;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...

Réponses

  • CéroceCéroce Membre, Modérateur
    00:06 modifié #2
    Ce que tu veux faire est compliqué.

    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).
  • frOMfrOM Membre
    00:06 modifié #3
    C'est bien connu, il est des boà®tes qu'il ne faut pas ouvrir... et core data est formidable à  condition de rester dans les clous ! " enfin, pour les débutants. J'ai fait une application simple (non-document) avec deux persistentStores : le problème est que les deux stores doivent être impérativement ouverts si l'on veut que les données se séparent bien en deux fichiers (sinon, tout dans le même store) ; je comprends mieux maintenant le conseil de faire deux contexts ; mais il y a encore trop d'effets de bords, j'envisage une autre solution que core data...

    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
Connectez-vous ou Inscrivez-vous pour répondre.