2011-11-05 15 views
5

Ho un'app che è qualcosa di un gestore di file generico. Vorrei che la funzionalità "Apri in ..." presente nelle app che utilizza QLPreviewController, UIDocumentInteractionController, ecc. Fosse in grado di inviare alla mia app qualsiasi tipo di file.Associazioni di tipo documento/file iOS - UTI jolly?

Ho creato un tipo di documento ma se "Tipi" è impostato su "*", "pubblico. *" O combinazioni simili Non riesco a visualizzare l'app per casi non specifici (funziona se cambio l'UTI in com.adobe.pdf, per esempio).

Su Mac OS X si può impostare un'applicazione per essere un visualizzatore generico di tutti i tipi di file - non è possibile su iOS?


EDIT

Passando attraverso la documentazione, ho trovato che ci sono solo una manciata di tipi di UTI primitivi, da cui tutti gli altri ereditano

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

Di questi, molti sono chiaramente mai saranno istanze di file.

Potrei essere stato eccessivamente ambizioso nel tentativo di creare un jolly test: ho provato public.item e ha funzionato su un file pdf dalla posta. Dal momento che i documenti affermano che public.item è il "Tipo di base per la gerarchia fisica.", Che potrebbe significare questo è il carattere jolly, vale a dire "public.item = *"

peggiore delle ipotesi, potrei aggiungere voce , contenuto, database e archivio e speriamo per il meglio. Il miglior caso, l'articolo copre tutto.

risposta

5

public.item funziona per ogni tipo che ho provato finora.

+1

'public.item' può anche abbinare cose strane come i codici creatore di Apple Event, come ho scoperto quando Ho ricevuto rapporti su un'app che ho lanciato in modo casuale su OS X 10.6. Ho risolto il problema utilizzando invece public.data. (Naturalmente, la roba di Apple Events non si applica a iOS ...) – Wevah

8

È necessario specificare sia un UTI sia per la struttura funzionale che per la gerarchia fisica. Per tutti i file (ma esclusi i bundle) è possibile utilizzare public.data + public.content. Per davvero tutto (inclusi i collegamenti simbolici e le cartelle) useresti public.item + public.content.

Vedere come Dropbox.app fa: http://www.cocoanetics.com/2013/01/open-in-all-files/

Vedere la mia interessante resoconto su IVU qui: http://www.cocoanetics.com/2012/09/fun-with-uti/

+0

Per escludere bundle/directory/file simbolici di sistema, non è abbastanza "public.data"? –