Core data dans une lib static

Salut,



je travaille sur une lib static et j'aimerai embarquer une partie en Core Data. J'ai plusieurs problèmes :

comment faire pour intégrer le model dans ma lib ?

=> j'ai fait un bundle comme indiqué dans http://stackoverflow...-for-the-iphone mais quand je regarde le contenu du paquet je n'obtiens le mom que d'une seule classe/entité alors que j'en ai 2, je ne sais pas ou est passée l'autre.

Le bundle à  un scheme "My mac 64-bit", je ne sais pas si c'est normal.



Sinon je me pose une question, j'ai un singleton dans ma lib pour gérer l'accès aux objets. Est-ce que ce singleton peut créer les objets core data independamment du programme qui utilise la lib ? Je me demande si le programme utilise aussi core data avec une autre base, est-ce que je peux avoir du code complètement indépendant ?

C'est à  dire que le programme aurait sa base (et ses objets CD) et ma lib aurait sa base (et ses propres objets CD).



Je crois que je ne suis pas très clair.



J'ai aussi trouvé ca http://nachbaur.com/...arter-core-data qui semble indiquer que c'est possible.

Réponses

  • CéroceCéroce Membre, Modérateur
    'groumpf' a écrit:


    J'ai plusieurs problèmes :

    comment faire pour intégrer le model dans ma lib ?


    On ne peut pas, une bibliothèque statique ne peut pas comporter de ressources, que du code.

    On peut toujours créer le NSManagedObjectModel par le code (faisable mais galère).



    Il reste la solution de faire une framework statique, nous en avons déjà  parlé.


    'groumpf' a écrit:


    Le bundle à  un scheme "My mac 64-bit", je ne sais pas si c'est normal.


    C'est un bug récurrent de Xcode. Relance-le, d'expérience ça rentre dans l'ordre.


    'groumpf' a écrit:


    Je crois que je ne suis pas très clair.


    Effectivement, je n'ai rien compris !

    J'ai l'impression que tu veux que ta lib et ton appli partagent un même NSManagedObjectContext; c'est évidemment possible.
  • 'Céroce' a écrit:


    Effectivement, je n'ai rien compris !

    J'ai l'impression que tu veux que ta lib et ton appli partagent un même NSManagedObjectContext; c'est évidemment possible.




    En fait c'est l'inverse image/smile.png' class='bbc_emoticon' alt=':)' />

    Je voudrais que les objets de ma lib gèrent leur base tandis que le programme peut gérer de son côté sa base de manière indépendante.

    Je ne veux pas qu'ils partagent quoi que ce soit ou que le programme ait à  changer son code pour intégrer la lib.



    D'après ce que je comprends vaguement, si je créé un bundle qui contient les fichiers mom, et que je l'importe dans le projet du programme, la lib serait capable de charger son model en allant le cherche dans le bundleLib (qui se retrouve du coup dans le bundle de l'appli).
  • Bon alors le bundle semble être correct car j'ai réussi à  charger la base dans une application en chargeant le modele à  partir du bundle en utilisant ce code (dans une classe de la lib) :


    <br />
      NSString *staticLibraryBundlePath = [[NSBundle mainBundle] pathForResource:@&quot;MaLibModels&quot; ofType:@&quot;bundle&quot;];<br />
      NSString *path = [[NSBundle bundleWithPath:staticLibraryBundlePath] pathForResource:@&quot;MaLib&quot; ofType:@&quot;momd&quot;];<br />
      NSURL *momURL = [NSURL fileURLWithPath:path];<br />
      managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];<br />
    




    En fait je pense que c'est normal que le scheme indique Mac 64bit car j'ai pris le template dans Mac car il n'y a pas de template pour créer des bundles dans iOS.



    Donc il me reste à  créer une base dans mon appli pour vérifier que les 2 peuvent cohabiter.
Connectez-vous ou Inscrivez-vous pour répondre.