Pergunta

Eu tenho um documento do tipo pacote - ou seja,é realmente uma pasta, mas usa NSFileWrapper e está em conformidade com com.apple.package para aparecer como um arquivo - que desejo compartilhar por email.Eu fiz um MFMailComposeViewController e estou tentando descobrir o que dar ao primeiro parâmetro de addAttachmentData:mimeType:fileName:.

O pacote contém um arquivo de imagem e um plist, embora isso possa mudar no futuro.

Como faço para converter um pacote em dados?Essa é a maneira certa de fazer isso?

Foi útil?

Solução

Como você disse, um pacote é na realidade uma pasta.É interpretado como um pacote apenas em sistemas operacionais OSX.

Como tal, o protocolo de correio não pode interpretá-lo como um pacote/como um único arquivo e vê apenas uma pasta padrão.

A única maneira de enviar por e-mail é compactar os arquivos em um único arquivo.Você pode fazer isso criando um arquivo ZIP do seu pacote ou um arquivo tar.gz, por exemplo.

Existem várias soluções para criar um arquivo ZIP a partir do código no Cocoa.Você pode usar a biblioteca libz e o código C diretamente, ou usar algumas bibliotecas de terceiros (que já possuem código genérico para isso e ajudam você a fazer isso mais facilmente usando métodos Cocoa), como Arquivo Zip ou outros.

Outras dicas

Meus arquivos não são grandes, então ZIP é um exagero e também estou tentando evitar o uso de código de terceiros.Então, criei uma abordagem diferente para anexar vários arquivos em um único anexo de e-mail.

Primeiro, já tenho um objeto NSFileWrapper que contém todos os arquivos que desejo em anexo.A chave é usar o método serializedRepresentation do NSFileWrapper para obter um objeto NSData para usar no anexo de email.Estou usando 'application/octet-stream' para o mimeType.Quando volto a abrir o anexo, uso o initWithSerializedRepresentation do NSFileWrapper:método para recuperar o NSFileWrapper original.

Isso funciona para mim porque o arquivo anexado só será usado e aberto pelo meu aplicativo.Obviamente, isso não funcionará se você precisar fazer algo com o anexo fora do seu aplicativo.Nesse caso, o ZIP parece ser a escolha lógica.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top