LSItemContentTypes不起作用

时间:2017-01-14 20:27:19

标签: objective-c macos cocoa quicklook uti

我试图在我的应用程序中添加一个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之后-杀?我该如何解决这个问题?

0 个答案:

没有答案