导出的UTI未被macOS接收

时间:2018-01-31 05:03:48

标签: macos cocoa nsdocument uti

我正在尝试在我的应用程序中导出UTI,但是macOS(10.3.2)没有提取它。我在一个较小的项目中复制了我的问题。以下是info.plist的相关部分:

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.plain-text</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Demo of custom file support</string>
        <key>UTTypeIconFile</key>
        <string>File-512</string>
        <key>UTTypeIdentifier</key>
        <string>am.customfiledemo.demotxt</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>demotxt</string>
            </array>
            <array/>
        </dict>
    </dict>
</array>

我尝试重启,甚至重建启动服务数据库,都没有效果:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain ststem -domain user -v

当我用

检查文件的UTI时
mdls -name kMDItemContentType -name kMDItemContentTypeTree file.demotxt

我得到一个动态(dyn.*)UTI,而不是am.customfiledemo.demotxt

kMDItemContentType                 = "dyn.ah62d4rv4ge80k3prr74hu7a"
kMDItemContentTypeTree             = (
    "dyn.ah62d4rv4ge80k3prr74hu7a",
    "public.data",
    "public.item"
)

1 个答案:

答案 0 :(得分:1)

使UTI符合public.datacom.apple.package

  

虽然自定义UTI可以符合任何UTI,但public.datacom.apple.package必须位于文件格式(例如文档)的所有自定义UTI的一致性层次结构的根部;否则,系统无法判断磁盘上的某个项目是否具有该UTI。

- Uniform Type Identifiers Overview, Declaring New Uniform Type Identifiers, Recommendations for Declaring new Uniform Type Identifiers