Dada una infección del tracto urinario (Uniform Tipo Identifier), encontrar todo tipo a la que se ajusta

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

Pregunta

Estoy escribiendo una aplicación que hace uso de identificadores de tipo de uniformes . En concreto, estoy llamando UTTypeCreateAllIdentifiersForTag() y pasándolo tipos diferentes MIME .

Mi esperanza era que esta función (a diferencia de UTTypeCreatePreferredIdentifierForTag()) me daría la UTI más específica, así como toda la UTI a la que se ajusta. Este no parece ser el caso - ya sea que devuelve un solo UTI, o las infecciones urinarias secundarias son espurios.

No es la función UTTypeConformsTo() definido en el mismo archivo de cabecera, pero yo preferiría una función que devuelve una matriz de todos los tipos a los que conforma este UTI.

Parece que hay esperanza para mí, como MDItemCopyAttributeList() devolverá una lista de este tipo. Dicho esto, se requiere una MDItemRef, que puede ser creado a partir de una ruta de archivo o URL - que no es grande. A veces mi datos sólo se almacenan en memoria y sólo tienen un tipo MIME a pasar.

¿Tengo que iterar a través de toda la base de datos de IU para obtener esta información o estoy perdiendo algo?

¿Fue útil?

Solución

I fue hecho falta algo: la solución obvia. Mientras estaba arrastre a través de los símbolos exportados por LaunchServices (y se dio cuenta del interesante, pero UTTypeCopyPedigree() privado), me acordé de UTTypeCopyDeclaration(), que es definido.

UTTypeCopyDeclaration() se le da una UTI y vuelve (como CFDictionaryRef) la lista de propiedades en el que se definió la UTI. El objeto de este diccionario con kUTTypeConformsToKey clave es o bien un CFArrayRef o CFStringRef. En el caso de una matriz, se puede recursivamente iterate hasta que se alcanza un tipo de base.

Así es como he construido un árbol de herencia de una infección urinaria dado. Espero que esto ayude a otra persona con el mismo problema.

Otros consejos

https://github.com/nst/UTIsExplorer genera un gráfico jerarquía de IU en "dot "formato para graphviz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top