Pregunta

Me di cuenta de que Apple comenzó a usar archivos zip para reemplazar paquetes de documentos (las carpetas que aparecen como un único archivo en el Finder) en las aplicaciones de iWork. Estoy pensando en hacer lo mismo que sigo recibiendo correos electrónicos de apoyo relacionados con mis paquetes de documentos conseguir dañado cuando se copia a un servidor de archivos de Windows.

Mi pregunta es ¿cuál sería la mejor manera de hacer esto en una aplicación basada en NSDocument?

Creo que la manera más fácil sería la creación de un envoltorio de archivo de directorio, crear un archivo de él y devolverlo en NSDocument de

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

Pero no llego a entender cómo crear un archivo zip de la NSFileWrapper.

¿Fue útil?

Solución

Si lo que desea es hacer un archivo zip de su formato (es decir, "mydoc.myextension" es en realidad un archivo zip), no hay conveniente, integrado en el mecanismo de cacao para la creación de archivos zip con el código. Echar un vistazo a este proyecto de Google Code: ZipArchive no creo que un derivador de archivos ayudará en ese caso, sin embargo.

Dado que usted ha citado iWork, que no son propietarios de iWork 09, pero las versiones anteriores utilizan un formato de paquete (es decir, NSFileWrapper sería ideal), pero zip el código XML que describe la estructura del documento, manteniendo los archivos adjuntos (medios incorporados como, imágenes , etc.) en una carpeta de recursos, todo ello dentro del paquete. Asumo que hacen esto porque XML puede ser bastante grande para documentos grandes y complicados, pero comprime muy bien porque es texto. Esto se traduce en un documento más pequeño en general.

Si, efectivamente, Apple ha movido a hacer todo el documento un archivo zip grande (que iba a encontrar impar), que habían ya sea ser la extracción de recursos necesarios a una carpeta temporal en algún lugar o cargar toda la cosa en la memoria (un paso hacia atrás desde su enfoque basado en el paquete, OMI). Estas son consideraciones que tendrá que tener en cuenta también.

Otros consejos

Usted querrá tomar los datos de la envoltura de archivos y alimentarlo en algo así como ZipArchive .

Pierre-Olivier Latour ha escrito una extensión a NSData que se ocupa de la compresión ZIP. Se puede conseguir aquí: http://code.google.com/p/polkit/

Sé que esto es un poco tarde a la fiesta, pero pensé que ofrecería a otro enlace que podría ayudar a cualquier persona que viene a través de este post.

Parece que la muestra ZipBrowser de Apple sería un buen comienzo http://developer.apple.com/library/mac/#samplecode/ZipBrowser/Introduction/Intro.html

HTH

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top