Frage

Ich habe ein paketartiges Dokument, d. h.Es ist wirklich ein Ordner, aber er verwendet NSFileWrapper und entspricht com.apple.package als Datei angezeigt werden soll, die ich per E-Mail teilen möchte.Ich habe eine gemacht MFMailComposeViewController und ich versuche herauszufinden, was ich dem ersten Parameter geben soll addAttachmentData:mimeType:fileName:.

Das Paket enthält eine Bilddatei und eine Plist. Dies könnte sich jedoch in Zukunft ändern.

Wie konvertiere ich ein Paket in Daten?Ist das der richtige Weg?

War es hilfreich?

Lösung

Wie Sie sagten, ist ein Paket in Wirklichkeit ein Ordner.Es wird nur auf OSX-Betriebssystemen als Paket interpretiert.

Daher kann das Mail-Protokoll es nicht als Paket bzw. als einzelne Datei interpretieren und sieht nur einen Standardordner.

Die einzige Möglichkeit, dies per E-Mail zu versenden, besteht darin, die Dateien in einer einzigen Datei zu komprimieren.Sie können dies tun, indem Sie ein ZIP-Archiv Ihres Pakets oder beispielsweise eine tar.gz-Datei erstellen.

Es gibt mehrere Lösungen, um in Cocoa ein ZIP-Archiv aus Code zu erstellen.Sie können die libz-Bibliothek und den C-Code direkt verwenden oder einige Bibliotheken von Drittanbietern verwenden (die bereits generischen Code dafür haben und Ihnen dabei helfen, dies mithilfe von Cocoa-Methoden einfacher zu tun), z ZipArchive oder andere.

Andere Tipps

Meine Dateien sind nicht groß, daher ist ZIP übertrieben und ich versuche auch, die Verwendung von Code von Drittanbietern zu vermeiden.Deshalb habe ich mir einen anderen Ansatz ausgedacht, um mehrere Dateien in einem einzigen E-Mail-Anhang anzuhängen.

Erstens habe ich bereits ein NSFileWrapper-Objekt, das alle Dateien enthält, die ich im Anhang haben möchte.Der Schlüssel besteht darin, die serializedRepresentation-Methode des NSFileWrapper zu verwenden, um ein NSData-Objekt abzurufen, das für den E-Mail-Anhang verwendet werden soll.Ich verwende „application/octet-stream“ für den mimeType.Wenn ich wieder dazu komme, den Anhang zu öffnen, verwende ich die initWithSerializedRepresentation von NSFileWrapper:Methode, um den ursprünglichen NSFileWrapper wiederherzustellen.

Das funktioniert bei mir, weil die angehängte Datei nur von meiner App verwendet und geöffnet wird.Dies funktioniert natürlich nicht, wenn Sie außerhalb Ihrer App etwas mit dem Anhang tun müssen.In diesem Fall scheint ZIP die logische Wahl zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top