2009-11-20 16 views
6

私のアプリケーションのドキュメントタイプのアイコンを登録しようとしています。 Declaring New Uniform Type Identifiersを読み、/Developer/Examples/Sketchを見た後、私は私のInfo.plistにこのような何かを思い付いた:アプリケーションのドキュメントタイプのアイコンを登録する

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
    <key>CFBundleTypeRole</key> 
    <string>Viewer</string> 
    <key>LSItemContentTypes</key> 
    <array> 
     <string>com.mycompany.myextension</string> 
    </array> 
    <key>NSDocumentClass</key> 
    <string>NSString</string> 
    </dict> 
</array> 

... 

<key>UTExportedTypeDeclarations</key> 
<array> 
    <dict> 
    <key>UTTypeDescription</key> 
    <string>Blah blah blah</string> 
    <key>UTTypeConformsTo</key> 
    <array> 
     <string>public.data</string> 
    </array> 
    <key>UTTypeIconFile</key> 
    <string>My-file-icon.icns</string> 
    <key>UTTypeIdentifier</key> 
    <string>com.mycompany.myextension</string> 
    <key>UTTypeTagSpecification</key> 
    <dict> 
     <key>public.filename-extension</key> 
     <array> 
     <string>myextension</string> 
     </array> 
    </dict> 
    </dict> 
</array> 

さて、すべてはなど、私は私の拡張子を持つファイルをクリックしたときに私のプログラムが開かれた。すなわち、罰金とダンディですしかし、文書アイコンはOSに登録されていません。すなわち、私は美しいMy-file-icon.icnsの代わりに醜い空白のアイコンが表示されます。上記のplistに何か不足していると思う?

答えて

9

UTExportedTypeDeclarationsアレイではなく、CFBundleDocumentTypesアレイのCFBundleTypeIconFileキーにアイコン名を入力してください。

もちろん、 "My-file-icon.icns"がターゲットのCopy Bundle Resourcesビルドフェーズにあり、アプリのバンドルのContents/Resourcesにコピーされていることを確認してください。

+0

うん、それだった。 CFBundleTypeIconFileはCFBundleDocumentTypesになければなりません。 – svintus

1

Info.plistのあなたのUTI宣言は正しいようですが、私は他の問題に気付きました。あなたのアプリケーションは、あなたがあなたのNSDocumentのサブクラスのエントリを次のようにNSStringのを交換する必要があるドキュメントベースのアプリケーションの場合:

<key>NSDocumentClass</key> 
<string>NSString</string> 

例えば、それはスケッチで「SKTDocument」です:

<key>NSDocumentClass</key> 
<string>SKTDocument</string> 

編集: してくださいまた、エクスポートされたUTIに独自の逆ドメイン名を使用するようにしてください。これにより、UTIが一意であることが保証されます。たとえば、私の場合はcom.mindnode.MindNode.MindNodeDocumentです。

+0

おかげで判明し、私はそれを修正します、同様の問題がありました。しかし、まだアイコンが登録されない理由は分かりません。 – svintus

2

私も....私はここに文書化したものにつきとして打上げサービスデータベースを再構築するために必要な

https://stackoverflow.com/a/12466968/1571635

+1

名前に '.icns'というアイコンがあることを確認してから、この回答ごとにLSデータベースを再構築し、それを修正しました。 –

関連する問題