Получение единого идентификатора типа для данного расширения
Я пытаюсь найти способ Cocoa перевести из расширений файлов в Uniform Type Identifiers. То есть, я хочу найти способ сделать это:
".jpg" => "public.jpeg"
".html" => "public.html"
".ttf"=> "public.truetype-font"
Я искал в документах NSWorkspace, но ничего не нашел. Самое близкое, что я мог получить, было:
- (NSImage *)iconForFileType:(NSString *)fileType
который возвращает значок для расширения файла, и
– (NSString *)preferredFilenameExtensionForType:(NSString *)typeName
что делает прямо противоположное тому, что я пытаюсь сделать. Кто-нибудь из вас знает, как это сделать?
Я действительно надеюсь, что мне не нужно проверять много расширений вручную.
Спасибо заранее.
Ответы
Ответ 1
Мне понадобилось это примерно неделю назад:
NSString * UTI = (NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
(CFStringRef)[myFilePath pathExtension],
NULL);
Если я запустил это на расширениях @ "php", @ "jpg", @ "html" и @ "ttf", он печатает:
public.php-script
public.jpeg
public.html
public.truetype-ttf-font
Ответ 2
Вы можете использовать терминал и вызывать mdls, который предоставляет вам всю информацию по определенному типу файла, включая UTI.
mdls /myPath/to/myFile.ext
mdls затем покажет вам связанные UTI в kMDItemContentTypeTree
(также можно вызвать mdls из вашего приложения Cocoa App btw).