OSX, не могу использовать пользовательский UTI для фильтрации сервисов контекстного меню Finder - PullRequest
3 голосов
/ 15 июня 2011

Мне нужно добавить пункт контекстного меню в приложении Finder для пользовательского типа файла.Поэтому я создал сервис с помощью Apple Automator.Когда я указываю для public.data в NSSendFileTypes, пункт контекстного меню обычно появляется на всех типах файлов, но когда я использую UTI, указанный в моем info.plist приложения, он не работает на определенных пользовательских типах файлов.Может ли кто-нибудь помочь намекнуть, возможно ли вообще использовать пользовательскую фильтрацию UTI для службы пунктов контекстного меню Finder, и если да, то, что я делаю неправильно, или может быть какое-либо «ноу-хау»?Файл info.plist файла рабочего процесса службы.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSServices</key>
    <array>
        <dict>
            <key>NSMenuItem</key>
            <dict>
                <key>default</key>
                <string>MyService</string>
            </dict>
            <key>NSMessage</key>
            <string>runWorkflowAsService</string>
            <key>NSRequiredContext</key>
            <dict>
                <key>NSApplicationIdentifier</key>
                <string>com.apple.finder</string>
            </dict>
            <key>NSSendFileTypes</key>
            <array>
                <string>com.myapp.anytype</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

Вот код объявления UTI из info.plist моего приложения.

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.archive</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Any type file format</string>
        <key>UTTypeIdentifier</key>
        <string>com.myapp.anytype</string>
        <key>UTTypeReferenceURL</key>
        <string>http://myapp.com</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>anytype</string>
            </array>
        </dict>
    </dict>
</array>

Я вижу свое приложение в списке предложенныхприложения для этого типа файлов, поэтому я полагаю, что объявление является правильным.

1 Ответ

1 голос
/ 22 июня 2011

Хотел поделиться тем, что я сделал не так. Формат файла, который я экспортировал из своего приложения, был в списке системных UTI, поэтому мое определение UTI для этого формата не могло быть экспортировано. Я просто использовал тот, который объявлен в системе. Спасибо избирателям!

...