Dans mon application, je voulais inclure un plugin QuickLook qui lit une extension non-système que d'autres applications utilisent également (utilisons RAR pour cet exemple). Je déclare l'extension en tant Exported UTI
dans mon Info.plist de paquet d'applications comme ceci:Associations d'UTI et d'extension de fichier
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.archive</string>
<string>com.rarlab.rar-archive</string>
</array>
<key>UTTypeDescription</key>
<string>Custom RAR Archive</string>
<key>UTTypeIdentifier</key>
<string>com.my-company.rarx-archive</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>rarx</string>
</array>
</dict>
</dict>
</array>
Et j'importer aussi de façon appropriée l'UTI RAR: semblent
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.archive</string>
</array>
<key>UTTypeDescription</key>
<string>RAR Archive</string>
<key>UTTypeIconFile</key>
<string>RAR</string>
<key>UTTypeIdentifier</key>
<string>com.rarlab.rar-archive</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>rar</string>
<string>rarx</string>
</array>
</dict>
</dict>
</array>
Les fichiers RARX ne jamais obtenir associé à mon application après je l'ai exécuté, cependant. Pour vérifier l'association, je mdls
comme ceci:
mdls -name kMDItemContentTypeTree "/Users/Me/.../A File.rarx"
>>> kMDItemContentTypeTree = (
"com.another-company.rarx-archive",
"public.data",
"public.item",
"public.archive"
)
Pourquoi mon infection urinaire (com.my-company.rarx-archive
) apparaître dans cette liste? Je crois que cela se traduit par mon plugin Quick Look ne pas tirer, car les fichiers sont associés à l'UTI com.another-company.rarx-archive
. L'autre application sur mon système est ce qui est utilisé à la place. L'exécution qlmanage
avec la sortie de débogage confirme cela.