Gestion de spotlihght dans mon appli

olofolof Membre
23:49 modifié dans API AppKit #1
Bonjour à  tous,

j'ai une petite appli, 'Document Based' de gestion. J'aimerais y ajouter le support de Spotlight. Je dois donc avec une fonction qui va créer une chaà®ne de caractère contenant une concaténation de tous les champs contenu dans mon fichier. Mais pour faire ça, je dois connaitre la structure de mes objets qui font mon modèle et qui sont sauvegardés.

Comment faire ? Dois-je faire un projet à  part et y ajouter les fichiers .h de mes objets ? Ou dois-je faire une autre target dans mon projet principal pour compiler mon "plug-in" spotlight ???

Mmmhhh, je sais pas si je suis très clair... N'hésitez pas si il faut plus de détails !


Merci

Réponses

  • schlumschlum Membre
    février 2007 modifié #2
    J'ai mis le temps, mais je pense avoir fini par comprendre ce que tu veux  :)
    En gros tu veux coder un "mdimporter" qui lit ton format de fichiers enregistrés... J'ai bon ?

    AMHA tes deux solutions se tiennent... Petite préférence pour la nouvelle "target", comme ça tu as tout dans un seul projet  ;)

    [Edit] Ceci dit, on peut créer un projet "Metadata Importer" avec Xcode, ce qu'on ne peut apparemment pas faire avec "new target"...
    Donc la solution la plus élégante n'est pas forcément la plus simple.  :crackboom:-
  • olofolof Membre
    23:49 modifié #3
    Aie aie aie, j'en étais sur que c'était pas clair  :P

    Mais je crois que tu as bien compris.

    Si je pars sur la solution élégante (donc la première), y'a-t-il une solution simple pour partager mes fichiers .h entre deux projets ? Est-ce que utiliser des liens symboliques pourrait fonctionner ?

    Je préfère poser un peu des questions avant de trop mettre les mains dedans, histoire de ne rien casser, vu que je débute avec xCode !!!

    En tout cas, merci !
  • AliGatorAliGator Membre, Modérateur
    23:49 modifié #4
    Pas besoin de liens symboliques, tien ne t'empêche d'intégrer à  un projet xCode des fichiers déjà  existants (et utilisés autre part)

    Encore heureux d'ailleurs, quand on pense à  tous les headers communs qu'on inclus, à  commencer par Cocoa.h !

    - tu peux te contenter de faire un #import sur ton fichier ".h", sans spécialement l'inclure dans la partie "Groups & Files" pour autant, pour l'utilisation que tu veux en faire en plus ça suffit amplement
    - ou tu peux l'ajouter à  ton projet comme n'importe quel autre fichier : rien ne t'empêche d'ajouter à  ton projet xCode un fichier existant déjà  sur le disque
    (ce qui peut être pratique pour consulter son contenu ; dans ce cas tu peux même cliquer sur le petit cadenas en haut à  droite de la zone d'édition de code, où tu as le contenu de ton fichier qui s'affiche, pour passer le fichier en "read-only" et éviter de modifier ton .h par erreur)
  • schlumschlum Membre
    février 2007 modifié #5
    dans 1171402561:

    Aie aie aie, j'en étais sur que c'était pas clair  :P

    Mais je crois que tu as bien compris.

    Si je pars sur la solution élégante (donc la première), y'a-t-il une solution simple pour partager mes fichiers .h entre deux projets ? Est-ce que utiliser des liens symboliques pourrait fonctionner ?

    Je préfère poser un peu des questions avant de trop mettre les mains dedans, histoire de ne rien casser, vu que je débute avec xCode !!!

    En tout cas, merci !

    C'est moi qui n'ai pas été clair sur le coup  :)
    Pour moi la solution élégante aurait été d'avoir un projet avec deux "targets", mais c'est sans doute plus simple d'avoir deux projets.
    Si tu pars sur la base de deux projets, tu peux bien entendu ajouter tes headers dans le projet ; il suffit de décocher la case "Copy items into destination group's folder (if needed)" si tu ne veux pas les avoir en double (et si tu comptes pouvoir les modifier sans avoir à  le faire deux fois).
    Par contre, après ça risque de poser problème si tu déplaces un des deux projets (si le lien est relatif) ou le projet original (si le lien est global)...
  • olofolof Membre
    23:49 modifié #6
    Ok, merci pour vos réponses.

    Je pense que je vais partir de la manière suivante :

    - dans le projet de mon appli, dans mes objets métier (le modèle), je vais ajouter une méthode qui charge le fichier et qui me retourne la chaà®ne de caractère à  fournir à  Spotlight (je ne pense pas que ce code là  doive être dans un autre projet, il est intimement lié au métier ! et lors de changements dans mon modèle, cette méthode devra suivre)

    - dans un nouveau projet (de type spotlight), j'inclus sans les copier les objets métier dont j'ai besoin

    Ok, je teste ça dès que je peux !
  • olofolof Membre
    23:49 modifié #7
    Alors, je m'y suis mis. J'ai fait un projet, j'ai importé mes fichiers, ça marche pas mal. J'installe mon fichier .mdimporter dans /Library/Spotlight et dans le terminal, je fais un :

    /usr/bin/mdimport -d2 <mon document>

    Et là , il me sort bien une bonne grosse chaà®ne de caractères comme je m'y attendais. Par contre, si je fais une recherche Spotlight sur un de ces mots, aucune réponse !

    Alors que si je créé un nouveau fichier (mais petit celui-ci, par rapport au précédent) ben là , ça fonctionne. J'ai réindexé mon disque, mais rien à  faire.

    Ca a plus un grand rapport avec Cocoa, mais si quelqu'un a une idée !!!!


    Merci !
  • olofolof Membre
    23:49 modifié #8
    Un pas de plus, maintenant, je n'ai plus qu'un seul projet (vu que le but est quand même d'intégrer ce mdimporter dans mon application, c'est quand même mieux !!).

    Par contre, Spotlight ne me trouve toujours pas mon fichier principal. Sur un fichier de test tout petit, ça joue mais pas sur un autre (bien plus gros).

    Quand je fais un

    /usr/bin/mdimport -d2 Documents/Personnel/Ma\ Cave.cav

    dans le terminal, je vois que la chaà®ne renvoyée par mon mdimporter contient des caractères spéciaux (non reconnus ?) :

    sse Parents Le Landeron  0 0 75 cl Blanc mousseux  Clairette de Die France Tino Die  0 0 75 cl Rouge Saint Saturnin de Vergy 2003 Hautes C\U00f4tes de Nuits France Catia Meursault  2007 2007 75 cl Rouge Cave des vignerons de Baixas 1998 Ch\U00e2teau les pins France C\U00e9line et Bertrand Baixas - Rousillon  0 0 75 cl Blanc Jean-Paul Ruedin 2006 Non filtr\U00e9 Suisse Cave Cressier (NE)  0 0 75 cl Rouge Jean Matayac 2001 Cahors Matayac France C\U00e9line (et Bertrand) Cahors Viande rouge grill\U00e9e, canard, agneau, gibier ou fromage. 0 0 75 cl Rouge Anne-Carole et Conrad Caloz 2003 Pinot Noir La Mourzi\U00e8re Suisse John et Anne Mi\U00e8ge - VS  0 0 75 cl Rouge Vignerons Benassis - Lavail 2004 Domaine des Hospices de Canet France Catia Canet en Rousillon  ";

    Est-ce que le problème pourrait venir de là  ???


    Merci !
  • schlumschlum Membre
    23:49 modifié #9
    Non, les \Uxxxx c'est normal... C'est comme ça qu'il code les caractères non ASCII apparemment (valeur unicode).
    J'ai essayé avec un commentaire Finder, ça fait pareil...
Connectez-vous ou Inscrivez-vous pour répondre.