如何将 Info.plist 中指定的类型的文件(或选择在 Finder 中打开)放到我的停靠图标上,然后使用文件的完整路径调用方法?
5 回答
如果您已经正确设置了 Info.plist 的CFBundleDocumentTypes数组(“LSItemContentTypes”或“CFBundleTypeExtensions”),那么您只需要设置一个 NSApplication 委托并实现委托方法application:openFile:。
如果您希望一次删除多个文件,请实现application:openFiles:。
对于承诺的文件 ( NSFilesPromisePboardType
/ kPasteboardTypeFileURLPromise
),请参阅将承诺的文件拖放到 Dock 中的应用程序图标上。
这是 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 应如下所示:
在当前系统上,您可以使用UTI代替旧式的四字符类型(例如fold
上面)。在 Xcode 的文档类型编辑器中,创建一个新类型:
- 名称:文件夹
- 标识符:public.folder
public.folder
是 的子类型public.directory
。public.folder
匹配对用户显示的目录,即不是像.app
包装器这样的包。
在侧窗格的目标组中选择您的应用程序并使用获取信息。然后在新窗口中选择属性选项卡以添加新的文档类型。为方便起见,将其命名为“文件夹”,操作系统类型需要为“折叠”;您可以保持原样的商店类型和角色。
如果您实际上是在制作基于文档的应用程序,那么将其设置为为您提供路径将使您做的工作远远超出您的需要。只需使用基于文档的应用程序模板。文档控制器将为您创建正确类的实例;你只需要写那个类。
您以这种方式创建的应用程序将免费处理文件丢失(通过将它们作为文档打开)。