Domanda

Ho notato che Apple ha iniziato a utilizzare archivi zip per sostituire i pacchetti di documenti (cartelle che appaiono come un unico file nel Finder) nelle applicazioni di iWork. Sto pensando di fare lo stesso, come continuo a ricevere messaggi di posta elettronica di supporto relativi ai miei pacchetti di documenti venire corrotto quando copiandoli in un fileserver di Windows.

Le mie domande è quello che sarebbe il modo migliore per farlo in un'applicazione NSDocument-based?

Credo che il modo più semplice sarebbe quella di creare un file di directory involucro, creare un archivio di e restituirlo in NSDocument di

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

Ma non riesco a capire come creare un archivio zip del NSFileWrapper.

È stato utile?

Soluzione

Se si vuole solo fare un file zip il formato (ad esempio, "mydoc.myextension" è in realtà un file zip), non c'è conveniente, built-in meccanismo di cacao per la creazione di archivi ZIP con il codice. Date un'occhiata a questo progetto Google Code: ZipArchive non credo un file wrapper aiuterà in tal caso, però.

Dal momento che hai citato iWork, io non possiedo iWork 09, ma le versioni precedenti utilizzano un formato di pacchetto (ad esempio, NSFileWrapper sarebbe l'ideale), ma zip l'XML che descrive la struttura del documento, pur mantenendo gli allegati (multimediale incorporato come, immagini , ecc) in una cartella delle risorse, il tutto all'interno del pacchetto. Presumo che fanno questo perché XML può essere abbastanza grandi per i grandi, i documenti complicati, ma comprime molto bene perché è il testo. Ciò si traduce in un documento globale più piccolo.

Se, infatti, Apple ha spostato a rendere l'intero documento un archivio zip grande (che avrei trovato strano), avrebbero essere o l'estrazione di risorse necessarie per una cartella temporanea da qualche parte o di caricare il tutto in memoria (un passo indietro rispetto il loro approccio basati su pacchetti, IMO). Queste sono considerazioni che dovrete prendere in considerazione pure.

Altri suggerimenti

Ti consigliamo di prendere i dati dal file involucro e dei mangimi in qualcosa di simile ZipArchive .

Pierre-Olivier Latour ha scritto una proroga per NSData che si occupa di compressione zip. È possibile ottenere qui: http://code.google.com/p/polkit/

So che questo è un po 'tardi alla festa, ma ho pensato di offrire un altro link che potrebbe aiutare chiunque che viene in questo post.

Sembra che il campione ZipBrowser di Apple sarebbe un buon punto di partenza http://developer.apple.com/library/mac/#samplecode/ZipBrowser/Introduction/Intro.html

HTH

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top