Документы iOS / Ассоциации типов файлов - подстановочный знак UTI? - PullRequest
6 голосов
/ 05 ноября 2011

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

Я создал тип документа, но есть ли «Типы»установлен на "*", "public. *" или аналогичные комбинации. Я не могу отобразить приложение для неспецифических случаев (это работает, если я изменяю 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 из почты.Поскольку в документах указано, что public.item является «базовым типом для физической иерархии», это может означать, что является подстановочным знаком, т.е. «public.item = *»

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

Ответы [ 2 ]

8 голосов
/ 12 января 2013

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

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

См. Мое описание о ИМП здесь: http://www.cocoanetics.com/2012/09/fun-with-uti/

5 голосов
/ 06 ноября 2011

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

...