Core Data, NSOutlineView et NSTreeController
helgrind
Membre
Bonjour,
J'utilise Core Data avec une NSOutlineView et un NSTreeController. J'aimerais que cette NSOutlineView ait l'apparence de celle qui est dans Mail/iTunes, c'est à dire avec différent groupes.
Quelque chose comme ça:
Bibliothèque
--> Ma bibliothèque
--> Dossier 1
--> Dossier 2
...
Dossiers Intelligents
--> Ajouté récemment
--> Meilleur Classement
...
Le problème est que je ne veut pas enregistrer ces groupes (Bibliothèque et Dossiers intelligents) dans la base de donnée.
J'aimerais les créer au lancement de l'app puis de leurs ajouter leurs sous-groupes respectifs.
J'arrive bien les créer au lancement en utilisant un in-memory store, mais je n'arrive pas à leurs associer leurs sous-groupes qui sont stocké dans la BDD.
Comment puis-je faire ça?
Merci
J'utilise Core Data avec une NSOutlineView et un NSTreeController. J'aimerais que cette NSOutlineView ait l'apparence de celle qui est dans Mail/iTunes, c'est à dire avec différent groupes.
Quelque chose comme ça:
Bibliothèque
--> Ma bibliothèque
--> Dossier 1
--> Dossier 2
...
Dossiers Intelligents
--> Ajouté récemment
--> Meilleur Classement
...
Le problème est que je ne veut pas enregistrer ces groupes (Bibliothèque et Dossiers intelligents) dans la base de donnée.
J'aimerais les créer au lancement de l'app puis de leurs ajouter leurs sous-groupes respectifs.
J'arrive bien les créer au lancement en utilisant un in-memory store, mais je n'arrive pas à leurs associer leurs sous-groupes qui sont stocké dans la BDD.
Comment puis-je faire ça?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Idée ? : Si l'arborescence a peu de niveaux (2 niveaux par exemple) on peut tenter l'architecture :
Groupe:NSArray ---> Sous_groupe:NSArray ---> Objets : NSObject
et voir si utiliser des NSArrayController ne simplifie pas dans cette situation
On doit pouvoir créer autant de niveaux que l'on veut.
Bon j'ai partiellement résolu le problème en créant ces groupes au premier lancement et en les stockant dans la BDD.
Comment puis-je savoir maintenant si ce groupe a déjà été créé au lancement?
Je ne comprends pas trop ce que tu appelles BDD ici : un fichier auxiliaire, un document genre XML, une arborescence de fichiers ?
Si tu regardes l'organisation de iTunes, tu verras qu'il y a une/plusieurs Property List ou fichiers équivalents, pour gérer l'ensemble de la bibliothèque.
Ces property list sont facilement gérables par les classes Cocoa, notamment pour créer une arborescence de Dictionnaire, Array, et type simples pour les feuilles.
Ben, là , je suis un peu à l'aveugle ... si il est créé dans ton code tu peux toujours mettre un NSLog lors de l'appel ou l'exécution d'une méthode de lecture/création.
La BDD dont je parle est simplement la base SQL ou les données (les fichiers/dossiers de l'arborescence) sont enregistrées par core data.
Je viens de résoudre le problème en vérifiant simplement que le premier noeud du NSTreeController correspond au groupe "Bibliothèque", si ce n'est pas le cas il est créé.
Pour l'instant ça fonctionne :P
Autant pour moi, cela fait bien longtemps que j'ai mis le nez dans CoreData.