2009-10-01 17 views
16

私は、ファイル拡張子から統一型識別子に変換する方法をCocoaで探しています。つまり、私はこれを行うための何らかの方法を見つけたいと思っています:NSWorkspaceドキュメントを検索しましたが、何も見つかりませんでした。私は得ることができる最も近いました:ファイル拡張子のアイコンを返し指定された拡張子の統一型識別子の取得

- (NSImage *)iconForFileType:(NSString *)fileType 

、および

– (NSString *)preferredFilenameExtensionForType:(NSString *)typeName 

私が何をしようとしているの正反対をしています。あなたの誰かがこれを行う方法を知っていますか?

多くの拡張機能を手作業で確認する必要はありません。

ありがとうございます。

答えて

37

私は一週間ほど前に、これを必要と:私は "JPG" @、 "HTML" @、および "TTF" @、 "PHP" @拡張子でこれを実行する場合

NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, 
                    (CFStringRef)[myFilePath pathExtension], 
                    NULL); 

、それが印刷されます。

public.php-script 
public.jpeg 
public.html 
public.truetype-ttf-font 
+8

関数名に 'Create'があるので、あなたはそのオブジェクトを' release'する責任があることを忘れないでください。 – Alex

+0

ありがとう!出来た。 最初はいくつか問題がありましたが、パス文字列の空白文字や改行文字をトリミングしていなかったためです。 (私はコマンドラインツールからそれらを読んでいます) –

+3

私はこれをちょうど今日必要としました。 :-) NSString * uti = [NSMakeCollectable(UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension、(CFStringRef)[myFilePath pathExtension]、NULL))autorelease]; ' –

9

あなたは、ターミナルを使用し、あなたの尿路感染症などの特定のファイルの種類に関する情報のすべての種類を提供しますのMDLを呼び出すことができます。

mdls /myPath/to/myFile.ext 

のMDLは、(それはところであなたのココアアプリの中からのMDLを呼び出すことも可能です)あなたのkMDItemContentTypeTree 内の関連尿路感染症が表示されます。

+0

これは良い情報です –

関連する問題