Pregunta

Tengo un documento tipo paquete, es decires realmente una carpeta, pero usa NSFileWrapper y se ajusta a com.apple.package para que aparezca como un archivo que quiero compartir por correo electrónico.he hecho un MFMailComposeViewController y estoy tratando de averiguar qué darle al primer parámetro de addAttachmentData:mimeType:fileName:.

El paquete contiene un archivo de imagen y un plist, aunque eso podría cambiar en el futuro.

¿Cómo convierto un paquete en datos?¿Es esa la forma correcta de hacer esto?

¿Fue útil?

Solución

Como dijiste, un paquete es en realidad una carpeta.Se interpreta como un paquete únicamente en los sistemas operativos OSX.

Como tal, el protocolo de correo no puede interpretarlo como un paquete/como un archivo único y solo ve una carpeta estándar.

La única forma de enviar esto por correo electrónico es comprimir los archivos en un solo archivo.Puede hacerlo creando un archivo ZIP de su paquete o un archivo tar.gz, por ejemplo.

Existen múltiples soluciones para crear un archivo ZIP a partir de código en Cocoa.Puede usar la biblioteca libz y el código C directamente, o usar algunas bibliotecas de terceros (que ya tienen un código genérico y le ayudan a hacerlo más fácilmente usando los métodos Cocoa), como Archivo Zip u otras personas.

Otros consejos

Mis archivos no son grandes, por lo que ZIP es excesivo y también intento evitar el uso de código de terceros.Entonces se me ocurrió un enfoque diferente para adjuntar varios archivos en un solo archivo adjunto de correo electrónico.

Primero, ya tengo un objeto NSFileWrapper que contiene todos los archivos que quiero en el archivo adjunto.La clave es utilizar el método serializedRepresentation de NSFileWrapper para obtener un objeto NSData que se utilizará para el archivo adjunto del correo electrónico.Estoy usando 'application/octet-stream' para mimeType.Cuando vuelvo a abrir el archivo adjunto, uso initWithSerializedRepresentation de NSFileWrapper:método para recuperar el NSFileWrapper original.

Esto funciona para mí porque el archivo adjunto solo será usado y abierto por mi aplicación.Obviamente, esto no funcionará si necesita hacer algo con el archivo adjunto fuera de su aplicación.En ese caso, ZIP parece ser la opción lógica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top