在Cocoa中打开任何文件

时间:2011-08-29 18:03:03

标签: cocoa

My Cocoa(Mac)应用程序处理的文件格式没有标准化的文件扩展名,我从用户那里收到的第一个请求是允许打开任何文件扩展名的文件,而不仅仅是一个封闭的文件扩展名。我准备的最常见的。

通常,您可以通过声明类处理的UTI并根据需要声明导入或导出的UTI来指定要在Info.plist中打开的文件类型。您可以指定那些与这些UTI关联的文件扩展名列表。未在其中列出扩展名的文件将无法放入停靠栏中的应用程序图标,并且将在“打开文件”对话框中显示为灰色。我似乎无法找到一种方法来覆盖此行为并接受任何扩展名的文件。互联网上有各种网站建议将*分配给文件扩展名,但这似乎对我不起作用。

Mac App Store中有很多可以做到这一点的Cocoa应用程序,其中一些来自Apple(例如Xcode),有些是由第三方开发者(TextWrangler)制作的,因此我认为必须有一种合法的方式来实现此

TLDR :如何在Cocoa中接受任何扩展名的文件?

1 个答案:

答案 0 :(得分:4)

我在其中一个应用中设置了此功能。它使用Info.plist键'CFBundleDocumentTypes'的以下值定义:

    <array>
        <dict>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>*</string>
            </array>
            <key>CFBundleTypeMIMETypes</key>
            <array>
                <string>public.item</string>
            </array>
            <key>CFBundleTypeOSTypes</key>
            <array>
                <string>****</string>
            </array>
            <key>CFBundleTypeRole</key>
            <string>Viewer</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>public.item</string>
            </array>
            <key>LSTypeIsPackage</key>
            <false/>
            <key>NSDocumentClass</key>
            <string>MONDocumentClass</string>
        </dict>
    </array>

但您可能需要修改它。