在我的應用程序中,我想包含一個讀取非系統擴展的QuickLook插件,其他應用程序也使用它(讓我們在此示例中使用RAR)。我宣佈擴展爲Exported UTI
在我的應用程序包的Info.plist像這樣:UTI和文件擴展名關聯
<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>
而且我也適當地導入RAR UTI:
<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>
的RARX文件似乎從來沒有與我有關但是我運行它之後的應用程序。要檢查的關聯,我用mdls
像這樣:
mdls -name kMDItemContentTypeTree "/Users/Me/.../A File.rarx"
>>> kMDItemContentTypeTree = (
"com.another-company.rarx-archive",
"public.data",
"public.item",
"public.archive"
)
爲什麼我的UTI(com.my-company.rarx-archive
),顯示在該列表中呢?我相信這會導致我的快速查看插件無法觸發,因爲這些文件與UTR的com.another-company.rarx-archive
相關聯。我的系統上的其他應用程序是用來代替的。用調試輸出運行qlmanage
證明了這一點。