Question

J'ai remarqué que Apple a commencé à utiliser des archives zip pour remplacer les paquets de documents (dossiers apparaissant comme un seul fichier dans le Finder) dans les applications iWork. J'envisage de faire la même chose que je continue à recevoir des courriels de soutien liés à mes paquets de documents s'endommagé lorsque les copier sur un serveur de fichiers Windows.

Ma question est quelle serait la meilleure façon de le faire dans une application NSDocument?

Je suppose que la meilleure façon serait de créer un emballage de fichier répertoire, créez une archive de celui-ci et le retourner dans son NSDocument

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

Mais je ne comprends pas comment créer une archive zip du NSFileWrapper.

Était-ce utile?

La solution

Si vous voulez juste faire un fichier zip votre format (c.-à- « mydoc.myextension » est en fait un fichier zip), il n'y a pas de mécanisme de cacao pratique, intégré pour créer des archives zip avec le code. Jetez un oeil à ce projet Google Code: zipArchive Je ne crois pas un emballage de fichier aidera dans ce cas, cependant.

Depuis que vous avez cité iWork, je ne possède pas iWork 09, mais les versions précédentes utilisent un format de paquet (c.-à-NSFileWrapper serait idéal) mais zip XML qui décrit la structure du document, tout en conservant des pièces jointes (médias comme embarqués, images , etc.) dans un dossier de ressources, le tout dans le paquet. Je suppose qu'ils font cela parce que XML peut être assez grand pour les grands documents complexes, mais compressent très bien parce qu'il est du texte. Il en résulte un petit document dans son ensemble.

En effet, si Apple a déplacé à rendre le document entier une grande archive zip (que je trouverais étrange), ils avaient soit être l'extraction des ressources nécessaires à un dossier temporaire quelque part ou le chargement de la chose entière dans la mémoire (un pas en arrière à partir leur approche par package, OMI). Ce sont des considérations que vous devrez prendre en compte.

Autres conseils

Vous aurez envie de prendre les données à partir de l'enveloppe de fichier et l'alimenter en quelque chose comme zipArchive .

Pierre-Olivier Latour a écrit une extension NSData qui traite de la compression zip. Vous pouvez l'obtenir ici: http://code.google.com/p/polkit/

Je sais que c'est un peu en retard à la fête mais je pensais que je vous propose un autre lien qui pourrait aider toute personne qui vient sur ce poste.

On dirait que l'échantillon ZipBrowser d'Apple serait un bon début http://developer.apple.com/library/mac/#samplecode/ZipBrowser/Introduction/Intro.html

HTH

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top