Domanda

Ho un documento di tipo pacchetto - I.e. È davvero una cartella, ma utilizza NSFileWrapper e conforme a com.apple.package per visualizzare come file - che voglio condividere via e-mail.Ho fatto un MFMailComposeViewController e sto cercando di risolvere cosa dare al primo parametro di addAttachmentData:mimeType:fileName:.

Il pacchetto contiene un file immagine e una plist, anche se ciò potrebbe cambiare in futuro.

Come posso convertire un pacchetto per i dati?È il modo giusto di fare questo?

È stato utile?

Soluzione

Come hai detto, un pacchetto è in realtà una cartella.È interpretato come un pacchetto solo sui sistemi operativi OSX.

Come tale, il protocollo di posta non può interpretarlo come pacchetto / come file singolo e vede solo una cartella standard.

L'unico modo per inviare questo via e-mail è quello di comprimere i file in un singolo file.Puoi farlo creando un archivio ZIP del tuo pacchetto o un file TAR.GZ ad esempio.

Ci sono molteplici soluzioni per creare un archivio ZIP dal codice in cacao.È possibile utilizzare direttamente la libreria libz e il codice C, o utilizzare alcune librerie di terze parti (che già ha un codice generico per questo e ti aiuta a farlo più facile usando i metodi di cacao), come zipchive o altri.

Altri suggerimenti

I miei file non sono grandi, quindi la Zip è eccessiva e sto anche cercando di evitare di utilizzare il codice di terze parti.Quindi ho trovato un approccio diverso per allegare più file in un singolo allegato e-mail.

In primo luogo, ho già un oggetto NSFileWrapper che contiene tutti i file che desidero nell'attacco.La chiave è utilizzare il metodo serializzato di NSFileWrapper per ottenere un oggetto NSDATA da utilizzare per l'allegato e-mail.Sto usando 'Application / Obet-Stream' per il mimetype.Quando torno a recuperare per aprire l'allegato, utilizzo l'initwithserializedresentationsentation della NSFileWrapper: Metodo per ottenere la schiena originale NSFileWrapper.

funziona per me perché il file allegato verrà utilizzato e aperto solo dalla mia app.Ovviamente, questo non funzionerà se è necessario fare qualcosa con l'allegato al di fuori della tua app.In tal caso, la zip sembra che sarebbe la scelta logica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top