如何使用NSWorkspace打开文件类型? - 可可

时间:2012-02-15 23:21:16

标签: cocoa nsworkspace

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

2 个答案:

答案 0 :(得分:1)

我做了一些测试,这也可能是其他人感兴趣的。解决方案有一个小例子。

在Xcode中创建一个新的Cocoa项目,转到xib并向窗口添加标签。我们将用它来进行概念验证。接下来,给你的app代表一些东西。接口:

#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

有一种方法可以关注:

应用:openFiles散

猜猜它是做什么的?它接收一个文件列表,这些文件来自点击桌面上或查找器中的项目,或者已将文件拖到图标上。它将传递一个带有文件名的数组,以及路径,UNIX样式。

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

那应该解决你的问题,你可以用.deb文件做任何你想做的事情(我假设debian包?)。

祝你好运!

生活

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

答案 1 :(得分:0)

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

如果你不告诉我们发生了什么,很难猜出会有什么帮助。