18

如何将 Info.plist 中指定的类型的文件(或选择在 Finder 中打开)放到我的停靠图标上,然后使用文件的完整路径调用方法?

4

5 回答 5

18

如果您已经正确设置了 Info.plist 的CFBundleDocumentTypes数组(“LSItemContentTypes”或“CFBundleTypeExtensions”),那么您只需要设置一个 NSApplication 委托并实现委托方法application:openFile:

如果您希望一次删除多个文件,请实现application:openFiles:

对于承诺的文件 ( NSFilesPromisePboardType/ kPasteboardTypeFileURLPromise),请参阅将承诺的文件拖放到 Dock 中的应用程序图标上

于 2010-03-22T04:39:23.760 回答
12

这是 Xcode 5 的更新解决方案。在 AppDelegate.m

-(BOOL)application:(NSApplication *)sender openFile:(NSString *)filename
{
    NSLog(@"%@", filename);
    return YES;
}

在 Xcode setup Document Types 下 Project > Targets > Info: 项目 > 信息 > 文档类型

检查 Info.plist 中的设置,以防您有一个空的“文档内容类型 UTI”数组,应正确填写或删除该数组。 从 Info.plist 中删除空的 Document Content Type UTIs 数组

您的 Info.plist 应如下所示: 文档类型信息.plist

于 2014-01-22T16:08:45.847 回答
9

在当前系统上,您可以使用UTI代替旧式的四字符类型(例如fold上面)。在 Xcode 的文档类型编辑器中,创建一个新类型:

  • 名称:文件夹
  • 标识符:public.folder

public.folder是 的子类型public.directorypublic.folder匹配对用户显示的目录,即不是像.app包装器这样的包。

于 2013-02-28T04:00:10.180 回答
1

在侧窗格的目标组中选择您的应用程序并使用获取信息。然后在新窗口中选择属性选项卡以添加新的文档类型。为方便起见,将其命名为“文件夹”,操作系统类型需要为“折叠”;您可以保持原样的商店类型和角色。

于 2010-05-02T11:40:45.717 回答
0

如果您实际上是在制作基于文档的应用程序,那么将其设置为为您提供路径将使您做的工作远远超出您的需要。只需使用基于文档的应用程序模板。文档控制器将为您创建正确类的实例;你只需要写那个类。

您以这种方式创建的应用程序将免费处理文件丢失(通过将它们作为文档打开)。

于 2010-03-22T04:52:07.867 回答