3

私はパッケージタイプのドキュメントを持っています-つまり、それは実際にはフォルダですが、ファイルとして表示されるように使用NSFileWrapperおよび準拠しcom.apple.packageています-これを電子メールで共有したいと思います。私はを作成MFMailComposeViewControllerし、の最初のパラメータに何を与えるかを考えようとしていますaddAttachmentData:mimeType:fileName:

パッケージには画像ファイルとplistが含まれていますが、将来変更される可能性があります。

パッケージをデータに変換するにはどうすればよいですか?それはこれを行う正しい方法ですか?

4

2 に答える 2

2

あなたが言ったように、パッケージは実際にはフォルダです。OSXオペレーティングシステムでのみパッケージとして解釈されます。

そのため、メールプロトコルはそれをパッケージ/単一ファイルとして解釈することはできず、標準フォルダのみを認識します。

これを電子メールで送信する唯一の方法は、ファイルを1つのファイルに圧縮することです。これを行うには、パッケージのZIPアーカイブ、またはtar.gzファイルなどを作成します。

CocoaのコードからZIPアーカイブを作成するための複数のソリューションがあります。libzライブラリとCコードを直接使用することも、ZipArchiveなどのサードパーティライブラリ(すでにジェネリックコードがあり、Cocoaメソッドを使用してこれを簡単に実行できるようにする)を使用することもできます

于 2012-09-16T16:34:24.347 に答える
1

私のファイルは大きくないので、ZIPはやり過ぎであり、サードパーティのコードの使用も避けようとしています。そこで、1つの電子メールの添付ファイルに複数のファイルを添付する別のアプローチを思いつきました。

まず、添付ファイルに必要なすべてのファイルを含むNSFileWrapperオブジェクトがすでにあります。重要なのは、NSFileWrapperのserializedRepresentationメソッドを使用して、電子メールの添付ファイルに使用するNSDataオブジェクトを取得することです。mimeTypeに「application/octet-stream」を使用しています。添付ファイルを開くことに戻ったら、NSFileWrapperのinitWithSerializedRepresentation:メソッドを使用して、元のNSFileWrapperを元に戻します。

添付ファイルは私のアプリでのみ使用および開かれるため、これは私にとってはうまくいきます。明らかに、アプリの外部で添付ファイルを使用して何かを行う必要がある場合、これは機能しません。その場合、ZIPは論理的な選択のようです。

于 2014-04-12T21:29:54.017 に答える