3

我有一个用 Obj-C 编写的应用程序。info.plist 包含应用程序可以打开的文件类型列表。我很确定这是可行的,因为当我尝试拖动不可接受类型的文件时,应用程序不会突出显示,但是当我拖动可接受类型的文件时,它会突出显示,并让我放下。

当我放下时,应用程序会正确启动,但是,然后我会看到一个对话框:

无法打开文档“foo.tiff”。DocView 无法打开“TIFF 文件”格式的文件。

我的 info.plist 中有这个

<key>CFBundleTypeExtensions</key>
<array>
   <string>tif</string>
   <string>tiff</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>TIFFFile.icns</string>
<key>CFBundleTypeName</key>
<string>TIFF File</string>
<key>CFBundleTypeOSTypes</key>
<array>
   <string>TIFF</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Documents/</string>

谢谢。

4

3 回答 3

4

您的应用程序是否真的处理文件打开?

如果是NSDocument应用程序,则需要实现其中一种文件读取方法,例如readFromData:ofType:error:. 在普通的 NSApplication 中,您的应用程序委托应在application:openFile:. 在这两种情况下,您都需要返回YES以确认您已成功打开文件。

如果您已经实现了这一点,是否正在发送消息?

于 2010-06-15T15:59:28.980 回答
2

首先,您显示的 Info.plist 的一部分在 CFBundleDocumentTypes 数组中,而不是在 Info.plist 的顶层,对吗?

其次,在 LSHandlerRank 下有 Documents/,它不是合法值,Documents 也不是。

第三,您可能需要添加 NSDocumentClass。

于 2010-06-15T16:07:11.390 回答
0

有时让我明白的另一件事是您需要包含 $(PRODUCT_MODULE_NAME)。在你的班级名称之前。如果您在 Swift 项目中使用 10.2.1 中的下拉菜单,Xcode 似乎不会在该字段中为您的类放置一个完全限定的名称。在以前的版本中确实如此。

我也怀疑,但还没有证明文档继承的类和任何类都需要是公共的或开放的。

于 2019-05-20T00:17:07.210 回答