【问题标题】:How to use NSWorkspace to be able to open a filetype? - Cocoa如何使用 NSWorkspace 能够打开文件类型? - 可可
【发布时间】:2012-02-15 23:21:16
【问题描述】:

我的应用程序能够提取 .deb 文件,但前提是您在应用程序中指定按钮的位置。但我希望能够只单击 .deb 文件并打开我的应用程序,运行我已有的操作,然后在完成后退出。现在我正在使用 NSWorspace 告诉我的应用程序它可以打开 .deb 文件,但我不知道如何让它运行我的操作。使用 NSWorkspace 是否正确?我还需要能够获取以字符串格式打开的文件的文件路径,我似乎无法解决这个问题?

【问题讨论】:

  • 您可能需要考虑创建一个document based application,这将提供您想要的功能,同时仍然允许您使用按钮打开文件。

标签: cocoa nsworkspace


【解决方案1】:

我做了一些测试,其他人可能也会对此感兴趣。通过一个小例子列出了解决方案。

在 Xcode 中创建一个新的 Cocoa 项目,转到 xib 并在窗口中添加一个标签。我们将使用它来进行概念验证。接下来,为您的应用委托提供一些内容。接口:

#import <Cocoa/Cocoa.h>

@interface fileClickerAppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
NSTextField *fileName;
}

@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSTextField *fileName;

@end

实现非常简单:

#import "fileClickerAppDelegate.h"

@implementation fileClickerAppDelegate

@synthesize window;
@synthesize fileName;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

}

- (void)application:(NSApplication *)theApplication openFiles:(NSArray *)filenames {

    [fileName setStringValue:[NSString stringWithFormat:@"Wow, even multiple files like %d :-)", [filenames count]]];
}

@end

有一种方法可以关注:

应用程序:打开文件。

猜猜它的作用是什么?它接收通过单击桌面或查找器中的项目或将文件拖动到图标上传递的文件列表。它将传递一个包含文件名的数组,以及 UNIX 样式的路径。

我的测试不需要在应用程序的 plist 中设置“文档类型”,也不需要使用 finder 进行花哨的注册工作。当然,这可以增加...

这应该可以解决您的问题,并且您可以对 .deb 文件做任何您想做的事情(我假设是 debian 包?)。

祝你好运!

生活

P.S.:只是不要忘记将 NSTextField 连接到 GUI 控件 ;-) 否则,它会工作但什么都不会显示....

【讨论】:

  • 谢谢,太好了!正是我要找的东西,我所说的 .deb 是指 DEBIAN 包。但是应用程序如何知道我正在打开此文件类型?
  • 就像应用程序没有在 finder 中显示为可以打开此文件类型的应用程序一样。我必须手动搜索并打开它
  • “没有出现在取景器中”是什么意思?如果您指的是“打开方式...”,则必须手动注册应用程序类型。首先,转到您的 plist 并添加一个键“文档类型”,这将添加一个带有 on 项目的数组。小心使用正确的钥匙!该数组包含文档类型名称的键,值应为 deb。处理程序等级暂时可以不用管(参考文档)。
  • 要使您的应用程序成为 .deb 文件的默认应用程序,请右键单击 .deb(例如,在您的工作区)并选择“信息”。您可以为文件类型选择默认应用程序,只需确保为该类型的所有文件更改它(通过相应的按钮)。
【解决方案2】:

请提供更多信息,说明您正在做什么以及为什么它不起作用,例如。 G。崩溃转储、gdb 输出等。

如果你不告诉我们我在做什么,很难猜到有什么帮助。

【讨论】:

  • 所以基本上我希望我的应用程序在您在桌面上单击它时打开一个文件,就好像它就像一个 word 文档文件并运行我所做的提取它的操作
  • 我也没有任何代码,我只是希望能够在查找器中单击我的文件类型并在我的应用程序中打开它并运行某个操作然后关闭
猜你喜欢
  • 2021-10-24
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 2010-12-22
  • 2015-06-26
  • 1970-01-01
相关资源
最近更新 更多