2010-05-15 17 views
2

J'ai créé un importateur Spotlight pour les fichiers BD. Les attributs sont importés avec succès et consultables. La seule chose qui reste est d'obtenir les attributs à afficher dans la fenêtre d'informations d'un fichier.Comment puis-je obtenir les attributs Spotlight à afficher dans la fenêtre d'informations sur l'obtention?

Il semble que cela devrait être une simple opération d'édition du fichier schema.xml afin que les attributs soient imbriqués dans les balises displayattrs. Malheureusement, cela ne semble pas fonctionner.

J'ai simplifié le plugin pour le test. Ce qui suit sont tous les fichiers importants.

schema.xml

<types> 
<type name="cx.c3.cbz-archive"> 
    <allattrs> 
     kMDItemTitle 
     kMDItemAuthors 
    </allattrs> 
    <displayattrs> 
     kMDItemTitle 
     kMDItemAuthors 
    </displayattrs> 
    </type> 
<type name="cx.c3.cbr-archive"> 
    <allattrs> 
     kMDItemTitle 
     kMDItemAuthors 
     </allattrs> 
    <displayattrs> 
     kMDItemTitle 
     kMDItemAuthors 
    </displayattrs> 
</type> 
</types> 

GetMetadataForFile.m

Boolean GetMetadataForFile(void* thisInterface, 
         CFMutableDictionaryRef attributes, 
         CFStringRef contentTypeUTI, 
         CFStringRef pathToFile) 
{ 
    NSAutoreleasePool * pool = [NSAutoreleasePool new]; 
    NSString * file = (NSString *)pathToFile; 
    NSArray * authors = [[UKXattrMetadataStore stringForKey: @"com_opencomics_authors" atPath: file traverseLink: NO] componentsSeparatedByString: @","]; 
    [(NSMutableDictionary *)attributes setObject: authors forKey: (id)kMDItemAuthors]; 
    NSString * title = [UKXattrMetadataStore stringForKey: @"com_opencomics_title" atPath: file traverseLink: NO]; 
    [(NSMutableDictionary *)attributes setObject: title forKey: (id)kMDItemTitle]; 
    [pool release]; 
    return true; 
} 
+0

Même problème ici. Plugin fonctionne très bien recherche-sage, mais pas personnalisé Finder – Jay

+0

Ah - problème était mauvais emplacement de * schema.xml * dans mon cas (voir ci-dessous) – Jay

Répondre

1

Vous semblez manquer une étiquette </types>. Copier/coller une erreur dans l'écriture de la question, ou est-il manquant dans le fichier XML, aussi?

S'il manque dans le fichier, le XML n'est pas valide.

+0

Vissé le format de débordement de la pile. J'ai exécuté mdcheckschema dessus pendant mon dépannage. –

0

À quoi ressemble votre structure de dossiers de plugins ?

Il devrait y avoir quelque chose comme ceci (extrait de QuartzComposer) pour que le schema.xml à trouver et traitées par le processus d'importateur Spotlight: