我正试图在Cocoa中找到一些方法来将文件扩展名转换为统一类型标识符。也就是说,我想找到一些方法:
".jpg" => "public.jpeg"
".html" => "public.html"
".ttf"=> "public.truetype-font"
我搜索过NSWorkspace文档但找不到任何内容。我能得到的最接近的是:
- (NSImage *)iconForFileType:(NSString *)fileType
返回文件扩展名的图标,
– (NSString *)preferredFilenameExtensionForType:(NSString *)typeName
与我正在尝试的完全相反。你们中的任何人都知道怎么做吗?
我真的希望我不必手动检查很多扩展。
提前致谢。
答案 0 :(得分:40)
一周前我需要这个:
NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
(CFStringRef)[myFilePath pathExtension],
NULL);
如果我在扩展@“php”,@“jpg”,@“html”和@“ttf”上运行它,它会打印:
public.php-script
public.jpeg
public.html
public.truetype-ttf-font
答案 1 :(得分:11)
您可以使用终端并调用 mdls ,它会为您提供有关某种文件类型(包括UTI)的各种信息。
mdls /myPath/to/myFile.ext
然后,mdls会在kMDItemContentTypeTree中显示相关的UTI
(也可以从你的Cocoa App btw中调用mdls。)