我试图在我的应用程序中添加一个Quick Look插件,为此我必须使用恶魔UTI系统。
我的应用是一个扩展名为.myext的文件查看器。
我的info.plist的相关部分如下所示:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>myext</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>Icon</string>
<key>CFBundleTypeName</key>
<string>Description</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array/>
<key>LSTypeIsPackage</key>
<integer>0</integer>
<key>NSDocumentClass</key>
<string>Document</string>
</dict>
</array>
如果我尝试向LSItemContentTypes添加(自定义)UTI标识符(com.myapp.myext),我的应用程序将无法再在其打开的对话框中选择任何文件。添加导出的UTI似乎没有任何影响。在.myext文件上运行mdls会返回kMDItemContentType =&#34; some.old.identifier&#34;,这是我几个月前尝试做同样事情时我的应用程序曾经拥有的UTI类型,并且不再出现在lsregister -dump中。 qlmanage -d 4显示它有一个dyn.xxxxxxx UTI标识符。
我需要做什么才能将mdls和qlmanage识别为com.myapp.myext?
额外信用:mdls如何以及为什么将.myext文件(甚至是新创建的文件)分类为&#34; some.old.identifier&#34;,即使它不再存在,甚至在lsregister之后-杀?我该如何解决这个问题?