3

カスタム ファイル タイプの Finder アプリケーションにコンテキスト メニュー項目を追加する必要があります。そこで、Apple Automator を使用してサービスを作成しました。NSSendFileTypes で public.data を指定すると、すべての種類のファイルでコンテキスト メニュー項目が正常に表示されますが、アプリケーションの info.plist で指定された UTI を使用すると、定義済みのカスタム ファイル タイプでは機能しません。Finderコンテキストメニュー項目サービスにカスタムUTIフィルタリングを使用できるかどうかを示唆するのに役立つ人はいますか?

これは、サービス ワークフロー ファイルの 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>

これは、私のアプリケーションの info.plist からの UTI 宣言コードです。

<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>

そのタイプのファイルに対して推奨されるアプリのリストに自分のアプリケーションが表示されるので、宣言は正しいと思います。

4

1 に答える 1

1

私が間違ったことを共有したかった。アプリからエクスポートしていたファイル形式がシステム UTI のリストにあったため、その形式の UTI 定義をエクスポートできませんでした。システムで宣言されているものを使用しました。有権者に感謝します!

于 2011-06-22T07:27:33.207 に答える