Подтвердить что ты не робот

Получение единого идентификатора типа для данного расширения

Я пытаюсь найти способ Cocoa перевести из расширений файлов в Uniform Type Identifiers. То есть, я хочу найти способ сделать это:

".jpg" => "public.jpeg"
".html" => "public.html" 
".ttf"=> "public.truetype-font"

Я искал в документах NSWorkspace, но ничего не нашел. Самое близкое, что я мог получить, было:

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

который возвращает значок для расширения файла, и

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

что делает прямо противоположное тому, что я пытаюсь сделать. Кто-нибудь из вас знает, как это сделать?

Я действительно надеюсь, что мне не нужно проверять много расширений вручную.

Спасибо заранее.

4b9b3361

Ответ 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).