A Универсальный идентификатор типа (UTI ) - это текстовая строка, используемая в программном обеспечении, предоставляемом Apple Inc., чтобы однозначно идентифицировать данный класс или тип элемента. Apple предоставляет встроенные UTI для идентификации общих системных объектов - типов файлов документов или изображений, папок и пакетов приложений, потоковых данных, данных вырезки, данных фильмов - и позволяет сторонним разработчикам добавлять свои собственные UTI для конкретных приложений или собственных нужд. Поддержка UTI была добавлена в операционную систему Mac OS X 10.4, интегрированную в технологию поиска на рабочем столе Spotlight, которая использует UTI для категоризации документов. Одной из основных целей разработки UTI было устранение двусмысленности и проблем, связанных с выводом содержимого файла из его типа MIME, расширения имени файла или типа или код создателя.
UTI использует структуру именования обратного DNS. Имена могут включать символы ASCII A – Z, a – z, 0–9, дефис («-») и точку («.»), А также все указанные выше символы Unicode. U + 007F. Двоеточие и косая черта запрещены для совместимости с Macintosh и соглашениями о путях к файлам POSIX. UTI поддерживают множественное наследование, позволяя идентифицировать файлы с любым количеством релевантных типов в зависимости от содержащихся данных.
Одной из трудностей при поддержании доступной для пользователя операционной системы является установление соединений между типами данных и приложениями или процессами, которые могут эффективно использовать такие данные. Например, файл, содержащий данные изображения в определенном формате сжатия, может быть открыт и обработан только в приложениях, способных обрабатывать данные изображения, и эти приложения должны иметь возможность определять, какой тип сжатия был использован для извлечения и работы с эти данные. В ранних компьютерных системах - особенно DOS, его вариантах и некоторых версиях Windows - ассоциации файлов поддерживаются с помощью расширений файлов. Код из трех-четырех символов, следующий за именем файла, дает указание системе открыть файл в определенных приложениях.
Начиная с Системы 1, операционные системы Macintosh прикрепили коды типов и коды создателей как часть файла. метаданные. Эти четырехсимвольные коды были разработаны, чтобы указать как приложение, создавшее файл (код создателя), так и конкретный тип файла (код типа), чтобы другие приложения могли легко открывать и обрабатывать данные файла. Однако, хотя коды типов и создателей расширяли гибкость системы - определенный тип файлов не ограничивался открытием в конкретном приложении - они страдали от многих из тех же проблем, что и расширения файлов. Коды типов и создателей могли быть потеряны при передаче файлов через системы, отличные от Macintosh (например, серверы на базе Unix), а множество кодов типов делало идентификацию проблематичной.
Кроме того, классическая Mac OS вообще не распознавала расширения файлов, что приводило к нераспознанным файловым ошибкам при передаче файлов из систем DOS / Windows. OPENSTEP, который лег в основу Mac OS X, использовал расширения, и ранние версии Mac OS X последовали его примеру. Это вызвало разногласия с пользователями и разработчиками, пришедшими в OS X из NeXT или Windows, выступающими за продолжение использования расширений файлов, и теми, кто пришел из классической Mac OS, призывая Apple заменить или дополнить расширения файлов типом и создателями.
Существуют и другие типы идентификации файлов: например, типы MIME используются для идентификации данных, которые передаются через Интернет. Однако система UTI от Apple была разработана для создания гибкой системы ассоциации файлов, которая описывала бы данные иерархически и позволяла бы улучшить категоризацию и поиск, стандартизировать описания данных в контексте и предоставить единый метод расширения типов данных. Например, UTI public.jpeg и public.png наследуются от UTI public.image, позволяя пользователям выполнять узкий поиск изображений JPEG или изображений PNG или в целом любого изображения, просто изменяя специфику UTI, используемого при поиске.. Кроме того, разработчики приложений, разрабатывающие новые типы данных, могут легко расширить доступные UTI. Например, новый формат изображения, разработанный компанией, может иметь UTI com.company.private-image и быть указан для наследования от типа public.image.
Apple macOS продолжает поддерживать другие формы ассоциации файлов и содержит утилиты для перевода между ними, но будет использовать UTI по желанию, где они доступны.
Apple поддерживает домен public. * Как набор базовых типов данных для всех UTI. Другие UTI связаны с этими базовыми UTI посредством соответствия, системы, аналогичной наследованию классов. UTI, которые соответствуют другим UTI, имеют общие базовые типы, и в целом любое приложение, которое работает с данными более общего UTI, должно иметь возможность работать с данными любого UTI, который соответствует этому общему UTI.
Самыми основными общедоступными UTI в иерархии Apple являются следующие:
Идентификатор | Соответствует | Комментарий |
---|---|---|
public.item | базовый класс в физической иерархии | |
public.content | базовый класс для всего содержимого документа | |
public.data | public.item | базовый класс для всех файлов, байтовых потоков, картона и т. д. |
public.image | public.data, public.content | базовый класс для всех изображений |
UTI даже используются для идентификации идентификаторы других типов файлов:
Идентификатор | Соответствует | Комментарий |
---|---|---|
public.filename-extension | public.case -less-text | Filename extension |
public.mime-type | public.case-нечувствительный-текст | MIME-тип |
com.apple.ostype | public.text | Четыре -символьный код (тип OSType ) |
com.apple.nspboard-type | public.text | тип |
Динамические UTI могут быть созданы по мере необходимости приложениями; они имеют префикс дин. и возьмите f или "UTI-совместимой оболочки вокруг неизвестного в противном случае расширения имени файла, типа MIME, OSType и т. д."
Apple предоставляет большую коллекцию объявленные системой унифицированные идентификаторы типа. Сторонние приложения могут добавлять UTI в базу данных, поддерживаемую macOS, «экспортируя» UTI, объявленные в пакете приложения. Поскольку новые UTI могут быть объявлены как «соответствующие» существующим системным UTI, а объявления могут связывать новые UTI с расширениями файлов, экспортированное объявление само по себе может предоставить операционной системе достаточно информации для включения новых функций, таких как включение Quick Ищите новые типы файлов.
Описание | UTI | Extensions | Соответствует | типам MIME | Ссылочный URL |
---|---|---|---|---|---|
OPML документ | org.opml.opml | .opml | public.xml | текст / xml, текст / x-opml, приложение / xml | http://dev.opml.org/spec2.html |
Markdown документ | net.daringfireball.markdown | .md,.markdown | public.plain-text | текст /markdown | http://daringfireball.net/projects/markdown/ |
SQLite база данных | vnd.sqlite3 | .sqlite3,.sqlite,.db | public.database, общедоступная.data | application / vnd.sqlite3 | https://www.sqlite.org/fileformat2.html |
.
Чтобы получить UTI данного файла, используйте mdls (список метаданных, часть Spotlight ) команда в Терминале.
mdls -name kMDItemContentType -name kMDItemContentTypeTree -name kMDItemKind FILE