Iphone 如何将包类型文档作为邮件附件发送?

Iphone 如何将包类型文档作为邮件附件发送?,iphone,mfmailcomposeviewcontroller,nsfilewrapper,Iphone,Mfmailcomposeviewcontroller,Nsfilewrapper,我有一个包类型的文档-即它实际上是一个文件夹,但它使用NSFileWrapper,并符合com.apple.package以文件形式显示-我想通过电子邮件共享。我制作了一个MFMailComposeViewController,我正在尝试为addAttachmentData:mimeType:fileName:的第一个参数指定什么 该包包含一个映像文件和一个plist,不过将来可能会发生变化 如何将包转换为数据?这是正确的方法吗?正如您所说,包实际上是一个文件夹。它被解释为仅在OSX操作系统上的

我有一个包类型的文档-即它实际上是一个文件夹,但它使用
NSFileWrapper
,并符合
com.apple.package
以文件形式显示-我想通过电子邮件共享。我制作了一个
MFMailComposeViewController
,我正在尝试为
addAttachmentData:mimeType:fileName:
的第一个参数指定什么

该包包含一个映像文件和一个plist,不过将来可能会发生变化


如何将包转换为数据?这是正确的方法吗?

正如您所说,包实际上是一个文件夹。它被解释为仅在OSX操作系统上的包

因此,邮件协议不能将其解释为包/单个文件,只能看到标准文件夹

通过电子邮件发送此信息的唯一方法是将文件压缩为单个文件。您可以通过创建包的ZIP存档或tar.gz文件来实现这一点


有多种解决方案可以从Cocoa中的代码创建ZIP存档。您可以直接使用libz库和C代码,也可以使用一些第三方库(已经有了通用代码,可以使用Cocoa方法帮助您更轻松地实现这一点),例如或其他。我的文件不太大,因此ZIP太过复杂,我也在尝试避免使用第三方代码。因此,我提出了一种不同的方法,在一个电子邮件附件中附加多个文件

首先,我已经有了一个NSFileWrapper对象,它包含了我想要的附件中的所有文件。关键是使用NSFileWrapper的serializedRepresentation方法获取用于电子邮件附件的NSData对象。我正在对mimeType使用“application/octet stream”。当我重新开始打开附件时,我使用NSFileWrapper的initWithSerializedRepresentation:方法返回原始NSFileWrapper


这对我很有用,因为附加的文件只会被我的应用程序使用和打开。显然,如果你需要在你的应用程序之外处理附件,这将不起作用。在这种情况下,ZIP似乎是一个合乎逻辑的选择。

我也对这方面的解决方案感兴趣。