Как мне сделать файл, который идентифицирует как пользовательский тип UTI? - PullRequest
1 голос
/ 05 июня 2010

Прямо сейчас у меня есть приложение, которое генерирует файл XML. Мы назовем это someFile.myapp Когда мое приложение сохраняет файл и просматривает его, используя mdls, оно имеет kMDItemContentType «dyn.234kdfsjk23jk24234kjfd» Как я могу получить тип файла UTI в качестве пользовательского значения, например com.mycompany.myapp?

Ответы [ 3 ]

3 голосов
/ 05 июня 2010

UTI связаны с расширениями через объявление в файле Info.plist вашего приложения. Добавить раздел, например, так:

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.xml</string>
        </array>
        <key>UTTypeDescription</key>
        <string>My Special File Type</string>
        <key>UTTypeIdentifier</key>
        <string>org.myapp.someutiidentifier</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>myapp</string>
            </array>
        </dict>
    </dict>
</array>
1 голос
/ 05 июня 2010

Файлы отображаются в UTI с помощью Launch Services, которая теоретически может использовать много разных видов информации о файле для определения его типа, но на практике игнорирует все, кроме расширения файла. Следовательно, если вы хотите, чтобы тип вашего файла был идентифицируемым, вам нужно придумать уникальное расширение и сопоставить его с соответствующим типом в Info.plist вашего приложения. Если ваши файлы должны иметь расширение, которое уже заявлено другим приложением, значит, вы SOL.

Насколько я вижу - и я говорю это как давний поклонник Mac - это один из аспектов Mac OS X, где действительно можно сказать: «Добро пожаловать в 1985!»

1 голос
/ 05 июня 2010

Придумайте уникальное расширение для вашего файла и используйте экспортированное объявление UTI, чтобы связать расширение с вашим UTI.

...