Question

J'ai un document de type package - c'est-à-direc'est vraiment un dossier, mais il utilise NSFileWrapper et est conforme à com.apple.package apparaître sous forme de fichier - que je souhaite partager par e-mail.j'ai fait un MFMailComposeViewController et j'essaie de trouver quoi donner au premier paramètre de addAttachmentData:mimeType:fileName:.

Le package contient un fichier image et un plist, bien que cela puisse changer à l'avenir.

Comment convertir un package en données ?Est-ce la bonne façon de procéder ?

Était-ce utile?

La solution

Comme vous l'avez dit, un colis est en réalité un dossier.Il est interprété comme un package uniquement sur les systèmes d'exploitation OSX.

En tant que tel, le protocole de messagerie ne peut pas l'interpréter comme un package / comme un fichier unique et ne voit que un dossier standard.

Le seul moyen d'envoyer ceci par courrier électronique consiste à compresser les fichiers dans un seul fichier.Vous pouvez le faire en créant une archive zip de votre colis ou un fichier tar.gz par exemple.

Il existe plusieurs solutions pour créer une archive ZIP à partir du code dans le cacao.Vous pouvez utiliser directement la Libz Library and C code ou utiliser certaines bibliothèques tierces (qui a déjà un code générique pour cela et vous aide à faciliter l'utilisation de méthodes de cacao), telles que zipararchive ou autres.

Autres conseils

Mes fichiers ne sont pas grands, alors zip est surchargé et j'essaie également d'éviter d'utiliser du code tiers.J'ai donc proposé une approche différente pour joindre plusieurs fichiers dans une seule pièce jointe électronique.

Premièrement, j'ai déjà un objet NsfileWrapper contenant tous les fichiers que je veux dans la pièce jointe.La clé consiste à utiliser la méthode SerializedrePresentation de NsfileWrapper pour obtenir un objet NSData à utiliser pour la pièce jointe de messagerie.J'utilise 'Application / Octet-Stream' pour le mimeType.Lorsque je reprends l'ouverture de la pièce jointe, j'utilise l'initwithSerializeRreRrefresentation de NsfileWrapper: méthode pour récupérer l'original NsfileWrapper.

Cela fonctionne pour moi car le fichier joint ne sera utilisé et ouvert que par mon application.De toute évidence, cela ne fonctionnera pas si vous devez faire quelque chose avec la pièce jointe en dehors de votre application.Dans ce cas, Zip semble être le choix logique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top