代码之家  ›  专栏  ›  技术社区  ›  Jake Petroules

我是否正确使用了统一的类型标识符?

  •  1
  • Jake Petroules  · 技术社区  · 14 年前

    我正在为Mac OS X创建一个应用程序,我想知道我是否在应用程序的.plist文件中正确使用了uti:

    <key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeIdentifier</key>
            <string>com.petroules.silverlock.database</string>
            <key>UTTypeDescription</key>
            <string>Silverlock Database File</string>
            <key>UTTypeIconFile</key>
            <string>app.icns</string>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.data</string>
            </array>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>com.apple.ostype</key>
                <string>SDBX</string>
                <key>public.filename-extension</key>
                <array>
                    <string>sdbx</string>
                </array>
                <key>public.mime-type</key>
                <string>application/octet-stream</string>
            </dict>
        </dict>
    </array>
    

    虽然双击finder中的.sdbx文件不会导致应用程序本身打开文件,但此代码似乎可以工作…但这可能只是我的代码(稍后我将研究)。

    另外,我的文件类型的格式是用base-64编码的加密内容…application/octet流是否是用于此目的的最佳mime类型,或者是否应该使用其他类型,我是否可以通过使用不太常见的mime类型在频谱中的任何位置遇到兼容性问题?

    此外,我还包括以下代码:

    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>sdbx</string>
            </array>
            <key>CFBundleTypeIconFile</key>
            <string>app.icns</string>
            <key>CFBundleTypeName</key>
            <string>com.petroules.silverlock.database</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.petroules.silverlock.database</string>
            </array>
            <key>LSHandlerRank</key>
            <string>Owner</string>
        </dict>
    </array>
    

    我应该包括这个吗,因为我上面有UTI代码?这是必要的吗?这两者有什么区别?我无法从文件中确定这一点。谢谢)

    1 回复  |  直到 14 年前
        1
  •  2
  •   user23743    14 年前

    若要查明此代码或代码是否有问题,请在双击该文件之前退出应用程序。如果这会启动应用程序但不打开文件,则 Info.plist 很好,你的问题在 -[[NSApp delegate] application:openFile:] . 如果应用程序根本不启动,您可以确保 幻灯片 就发射服务而言不正确。

    都需要 UTExportedTypeDeclarations CFBundleDocumentTypes 诗节。第一个通知启动服务您的自定义UTI存在。第二个消息告诉它,您的应用程序是该文件类型的编辑器。