Как использовать NSWorkspace, чтобы иметь возможность открыть тип файла? - какао - PullRequest
0 голосов
/ 16 февраля 2012

Мое приложение может извлекать файлы .deb, но только если вы укажете где с помощью кнопок в приложении.Но я хочу иметь возможность просто щелкнуть по файлу .deb и открыть свое приложение, запустить уже выполненные действия, а затем завершить работу.Сейчас я использую NSWorspace, чтобы сообщить своему приложению, что оно может открывать файлы .deb, но я не знаю, как заставить его выполнять мои действия.Является ли использование NSWorkspace правильным решением?Мне также нужно иметь возможность получить Filepath открываемого файла в строковом формате, и я не могу это исправить?

Ответы [ 2 ]

1 голос
/ 04 марта 2012

Я провел некоторое тестирование, и это также может заинтересовать других.Решение выложено на небольшом примере.

Создайте новый проект Cocoa в XCode, перейдите к 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

Существует один способ следить за:

application: openFiles.

Угадай, что он делает?Он получает список файлов, переданных либо после нажатия на элемент на рабочем столе или в программе поиска, либо путем перетаскивания файлов на значок.Ему будет передан массив с именами файлов, а также путями в стиле UNIX.

Для моих тестов не требовалось задавать «Типы документов» в списке приложений или выполнять необычные действия по регистрации с помощью поиска.,Конечно, это может добавить ...

Это должно решить вашу проблему, и вы можете делать все что угодно с вашими файлами .deb (я полагаю, пакеты debian?).

Удачи!

Living

PS: Только не забудьте подключить NSTextField к элементу управления GUI ;-) В противном случае он будет работать, но ничего не отображается ....

0 голосов
/ 16 февраля 2012

Пожалуйста, предоставьте немного больше информации о том, что именно вы делаете, и, возможно, почему это не работает, например, аварийный дамп, вывод gdb и т. Д.

Трудно догадаться, что может помочь, если вы нене говори нам, что я делаю.

...