我的
Cocoa(Mac)应用程序处理的文件格式没有标准化的文件扩展名,我从用户那里收到的第一个请求是允许打开任何文件扩展名的文件,而不仅仅是一组最常见的文件.我准备好了.
通常,您可以通过声明类处理的UTI并根据需要声明导入或导出的UTI来指定要在Info.plist中打开的文件类型.您可以指定那些与这些UTI关联的文件扩展名列表.未在其中列出扩展名的文件将无法放入停靠栏中的应用程序图标,并且将在“打开文件”对话框中显示为灰色.我似乎无法找到一种方法来覆盖此行为并接受任何扩展名的文件.互联网上有各种网站建议将*分配给文件扩展名,但这似乎对我不起作用.
Mac App Store中有许多可以做到这一点的Cocoa应用程序,其中一些来自Apple(例如Xcode),有些是由第三方开发者(TextWrangler)制作的,所以我认为必须有一种合法的方法来实现这一点.
TLDR:如何在Cocoa中接受任何扩展名的文件?
解决方法
我在我的一个应用程序中设置了这个.它使用Info.plist Key’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>
但你可能需要修改它.