Отбрасывание файлов на значок док-станции в Cocoa

Как я могу удалить файл (или открыть его в Finder) типа, указанного в Info.plist, на мой значок док-станции, а затем вызвать метод с полным путем файла?

Ответы

Ответ 1

Если вы настроили свой массив Info.plist CFBundleDocumentTypes (либо "LSItemContentTypes", либо "CFBundleTypeExtensions" ), тогда вы просто необходимо настроить делегат NSApplication и реализовать метод делегирования, application: openFile:.

Если вы ожидаете, что сразу несколько файлов будут удалены, выполните application:openFiles:.

Для обещанных файлов (NSFilesPromisePboardType/kPasteboardTypeFileURLPromise) см. Удаление обещанных файлов на значок приложения в Dock.

Ответ 2

Здесь представлено обновленное решение для Xcode 5. В AppDelegate.m

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

И в настройках Xcode Типы документов в разделе Проект > Цели > Информация: Project > Info > Document Types

Проверьте настройки в Info.plist, если у вас есть пустой массив документов типа UTIs, который должен быть правильно заполнен или удален. Delete empty Document Content Type UTIs array from Info.plist

Ваш Info.plist должен выглядеть примерно так: Document Types Info.plist

Ответ 3

В текущих системах вы можете использовать UTI вместо четырех типов <- > w980 > старого типа (например, fold выше). В редакторе типов документов Xcode создайте новый тип с помощью

  • Имя: Папка
  • Идентификатор: public.folder

public.folder является подтипом public.directory. public.folder соответствует каталогам, которые отображаются как таковые для пользователя, то есть не такие пакеты, как обертки .app.

Ответ 4

Выберите ваше приложение в целевой группе боковой панели и используйте команду "Получить информацию". Затем в новом окне выберите вкладку свойств, чтобы добавить новый тип документа. Назовите его "Папка" для удобства, и типы ОС должны быть "сброшены"; тип и роль хранилища, которые вы можете оставить как есть.

Ответ 5

Если вы действительно создаете приложение на основе документов, настроив его на то, чтобы дать вам путь, вы будете делать гораздо больше работы, чем вам нужно. Просто используйте шаблон приложения на основе документов. Контроллер документа создаст для вас экземпляр нужного класса; вам нужно только написать этот класс.

Приложение, созданное вами таким образом, будет обрабатывать файлы (открывая их как документы) бесплатно.