Ассоциации документов iOS / типов файлов — UTI с подстановочными знаками?

#ios #uti

#iOS #uti

Вопрос:

У меня есть приложение, которое является чем-то вроде общего файлового менеджера. Я хотел бы, чтобы функциональность «Открыть в …», присутствующая в приложениях, использующих QLPreviewController, UIDocumentInteractionController и т.д., Позволяла отправлять мое приложение с любым типом файла.

Я создал тип документа, но установлено ли значение «Типы» в » * «, «общедоступный. * » или аналогичные комбинации я не могу заставить приложение отображаться для неспецифических случаев (это работает, если я изменяю UTI на com.adobe.pdf, например).

В Mac OS X можно настроить приложение как универсальный просмотрщик всех типов файлов — разве это невозможно в iOS?


Редактировать

Просматривая документы, я обнаружил, что существует всего несколько примитивных типов UTI, от которых наследуются все остальные

 public.item
public.content 
public.database
public.calendar-event
public.message 
public.contact 
public.archive 
public.url-name
public.executable
com.apple.resolvable 
  

Очевидно, что многие из них никогда не будут экземплярами файлов.

Возможно, я был слишком амбициозен, пытаясь создать тест с подстановочными знаками: я попробовал public.item, и он работал с файлом PDF из mail. Поскольку в документах указано, что public.item является «Базовым типом для физической иерархии»., Это может означать, что это является подстановочным знаком, то есть » public.item = * «

В худшем случае я мог бы добавить элемент, содержимое, базу данных и архив и надеяться на лучшее. В лучшем случае элемент охватывает все.

Ответ №1:

Вам необходимо указать UTI как для функциональной, так и для физической иерархии. Для всех файлов (но исключая пакеты) вы можете использовать public.data public.content. Для действительно всего (включая символические ссылки и папки) вы бы использовали public.item public.content.

Посмотрите, как это делает Dropbox.app:http://www.cocoanetics.com/2013/01/open-in-all-files /

Смотрите мою статью об UTI здесь:http://www.cocoanetics.com/2012/09/fun-with-uti /

Комментарии:

1. Чтобы исключить пакеты / каталоги / системные символьные файлы, недостаточно «public.data»?

Ответ №2:

public.item работает для каждого типа, который я пробовал до сих пор.

Комментарии:

1. public.item также могут совпадать странные вещи, такие как коды создателей в событиях Apple, как я узнал, когда получил сообщения о случайном запуске моего приложения в OS X 10.6. Я исправил проблему, используя вместо этого public.data. (Конечно, информация о событиях Apple не относится к iOS …)