[Core Data iPhone] Plusieurs modèles ?

6ix6ix Membre
Hello,

Je me pose quelques questions concernant la structure de mes données pour une app iPhone qui utilisera Core Data. En gros, je pense partir sur un style " tabbar " où mes 2 tabs contiendront une liste de données qui n'ont pas de liens directs.

Et je verrais plusieurs manières de gérer cela, sans savoir vraiment s'il y en a une meilleure (point de vue efficacité et clarté) :
(1) tout mettre dans un modèle Core Data unique, qui est chargé dans le App Delegate et transmis ensuite aux deux contrôleurs racines de mes deux tabs
(2) créer deux modèles Core Data, et les charger dans le App Delegate avec la fonction "merge"
(3) créer deux modèles, et les charger séparément dans le contrôleur racine de leur tab respectif

La (3) me semble plus propre et évite sans doute (?) de charger des données inutiles si un tab n'est pas affiché, mais jusque-là  je n'ai jamais vu d'exemple qui procède différemment de (1).

D'après vous, cela a-t-il un sens de procéder comme décrit en (3), ou cela risque de me poser plus de problèmes qu'autres choses par la suite ?

Réponses

  • yoannyoann Membre
    05:07 modifié #2
    Si tes données n'ont absolument aucun rapport le 3 est plus joli en effet. Cependant c'est comme le maquillage des filles, quand tu regarde ça claque, mais quand tu regarde de plus près tu t'aperçois que c'est pas forcément utile. (Réponse philosophique je sais :p)

    Plus concrètement, CoreAnimation est un framework très lazy... Il ne charge en mémoire que les objets qui sont appelé. Donc même si tu n'as qu'un seul modèle, tant que les objets ne sont pas appelé tu n'as rien en mémoire, donc si qu'une seul tab est ouverte il n'y a rien de l'autre qui est chargé. Et tu peut même de temps en temps lui dire de faire le ménage pour vider tout ce qu'il a en mémoire et le recharger la prochaine fois qu'on lui redemande.

  • 6ix6ix Membre
    05:07 modifié #3
    Merci pour cette réponse, même philosophique  ;)

    dans 1270308568:
    Plus concrètement, CoreAnimation est un framework très lazy... Il ne charge en mémoire que les objets qui sont appelé. Donc même si tu n'as qu'un seul modèle, tant que les objets ne sont pas appelé tu n'as rien en mémoire, donc si qu'une seul tab est ouverte il n'y a rien de l'autre qui est chargé.

    Justement en fait, j'utilise ensuite un NSFetchedResultsController pour chacun de mes deux tabs (i.e. table views), qui permet entre autres de garder un cache des données demandées. Je ne sais pas exactement comment il fonctionne "under the hood", mais je me disais qu'en distinguant bien mes données, j'évitais peut-être de "cacher" trop de données inutilement.

    Mais j'imagine que là  aussi, cet objet gère intelligemment tout ça et ne va pas charger tout ce qu'il peut...

    Pour la beauté du geste, je pense quand même partir sur la solution (3).
Connectez-vous ou Inscrivez-vous pour répondre.