Frage

bemerkte ich, dass Apple mit Zip-Archiven gestartet Dokumentenpakete ersetzen (Ordner als einzelne Datei im Finder erscheinen) in den iWork-Anwendungen. Ich betrachte das gleiche zu tun wie ich Unterstützung von E-Mail bekommt immer wieder zu meinen Dokumentenpaketen im Zusammenhang beschädigt wird, wenn sie zu einem Fenster zu kopieren Datei-Server.

Meine Fragen sind, was der beste Weg wäre, dies in einer NSDocument-basierten Anwendung zu tun?

Ich denke, der einfachste Weg, eine Verzeichnisdatei Wrapper zu erstellen wäre, ein Archiv erstellen Sie es und senden Sie es in NSDocument der

- (NSFileWrapper *)fileWrapperOfType:(NSString *)typeName error:(NSError **)outError

Aber ich kann nicht verstehen, wie ein Zip-Archiv des NSFileWrapper erstellen.

War es hilfreich?

Lösung

Wenn Sie nur eine Zip-Datei Ihr Format vornehmen möchten (dh „mydoc.myextension“ ist eigentlich eine Zip-Datei), gibt es keine bequeme, eingebaute in Cocoa Mechanismus für die Erstellung von ZIP-Archiven mit Code. Werfen Sie einen Blick auf dieses Google-Code-Projekt: ZipArchive Ich glaube nicht, eine Datei-Wrapper wird dazu beitragen, in diesem Fall aber.

Da Sie iWork zitiert, das tue ich nicht eigene iWork 09, aber frühere Versionen verwenden, um ein Paket-Format (dh würde NSFileWrapper ideal sein), aber zip die XML, die die Struktur des Dokuments beschreibt, während Anhänge zu halten (wie eingebetteten Medien, Bilder , etc.) in einem Ressourcenordner, die alle innerhalb der Verpackung. Ich nehme an, sie tun dies, weil XML für große, komplizierte Dokumente sehr groß sein können, aber Kompressen sehr gut, weil es den Text. Dies führt zu einem insgesamt kleineren Dokument.

Wenn in der Tat Apple macht das gesamte Dokument eine große Zip-Archiv bewegt hat (was ich seltsam finden würden), würden sie entweder notwendigen Ressourcen, um einen temporären Ordner irgendwo zu extrahieren oder die ganze Sache in den Speicher zu laden (einen Schritt zurück aus ihr Paket-basierter Ansatz, IMO). Dies sind Überlegungen, die Sie benötigen, um zu berücksichtigen, als auch.

Andere Tipps

Hier finden Sie die Daten aus der Datei-Wrapper nehmen wollen und ihn in so etwas wie ZipArchive .

Pierre-Olivier Latour hat eine Erweiterung NSData geschrieben, dass sich mit ZIP-Komprimierung. Sie können es hier: http://code.google.com/p/polkit/

Ich weiß, das ist ein wenig zu spät zur Party, aber ich dachte, ich würde einen anderen Link darbringen, dass jemand helfen könnte, die sich über dieses Thema kommt.

Sieht aus wie die ZipBrowser Probe von Apple wäre ein guter Anfang http://developer.apple.com/library/mac/#samplecode/ZipBrowser/Introduction/Intro.html

HTH

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