Étant donné une infection urinaire (Uniform Type Identifier), trouver tous les types auxquels elle est conforme

StackOverflow https://stackoverflow.com/questions/3903953

Question

Je suis en train d'écrire une application qui utilise UTTypeCreateAllIdentifiersForTag() et le transmettre divers MIME types de.

Mon espoir est que cette fonction (comme distincte de UTTypeCreatePreferredIdentifierForTag()) me donnerait le plus UTI spécifique, ainsi que tous les IVU auquel il est conforme. Cela ne semble pas être le cas - il retourne soit une infection urinaire simple, ou les infections urinaires secondaires sont fausses.

Il y a la fonction UTTypeConformsTo() définie dans le même fichier d'en-tête, mais je préférerais une fonction qui retourne un tableau de tous les types auxquels cela est conforme UTI.

Il semble espoir pour moi, comme MDItemCopyAttributeList() renverra une telle liste. Cela dit, il faut un MDItemRef, qui peut être créé à partir d'un chemin d'accès de fichier ou URL - qui n'est pas grande. Parfois, mes données ne sont stockées en mémoire et je n'ai un type MIME à passer.

Dois-je itérer à travers toute la base de données de IVU pour obtenir ces informations ou suis-je manque quelque chose?

Était-ce utile?

La solution

Je ne manquait en effet quelque chose: la solution très évidente. Alors que je chalutait à travers les symboles exportés par LaunchServices (et remarqué l'intéressant, mais UTTypeCopyPedigree() privé), je me suis rappelé UTTypeCopyDeclaration(), qui défini.

UTTypeCopyDeclaration() est donnée à une infection urinaire et les rendements (en tant que CFDictionaryRef) la liste de biens, dans lequel le UTI a été défini. L'objet dans ce dictionnaire avec kUTTypeConformsToKey clé est soit un CFArrayRef ou CFStringRef. Dans le cas d'un tableau, on peut itérer de façon récursive jusqu'à ce qu'un type de base soit atteinte.

Voilà comment je construit un arbre d'héritage pour une infection urinaire donnée. J'espère que cela aide quelqu'un d'autre avec le même problème.

Autres conseils

https://github.com/nst/UTIsExplorer génère un graphique de hiérarchie de UTIs dans « dot "format graphviz.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top