ZipZap é uma biblioteca de E/S de arquivo zip para iOS, macOS e tvOS.
O arquivo zip é um contêiner ideal para documentos compostos em Objective-C. Arquivos Zip são amplamente usados e bem compreendidos. Você pode acessar aleatoriamente suas partes. O formato é compactado decentemente e possui amplo sistema operacional e suporte a ferramentas. Por isso, queremos tornar esse formato uma escolha ainda mais fácil para você. Assim, a biblioteca apresenta:
Interface fácil de usar : A API pública oferece apenas duas classes! No entanto, você pode examinar arquivos zip usando coleções e propriedades familiares do NSArray . E você pode compactar, descompactar e compactar arquivos zip por meio de classes familiares NSData , NSStream e Image I/O.
Implementação eficiente : otimizamos a leitura e gravação de arquivos zip para reduzir a pressão da memória virtual e a sobrecarga de arquivos em disco. Dependendo de como o seu documento composto está organizado, atualizar uma única entrada pode ser mais rápido do que gravar os mesmos dados em um arquivo separado.
Compatibilidade de formato de arquivo : Como o ZipZap segue de perto a especificação do formato de arquivo zip, ele funciona com a maioria das ferramentas zip do Mac, Linux e Windows.
Como um projeto independente:
No Terminal, execute git clone https://github.com/pixelglow/ZipZap.git
.
No diretório ZipZap , abra o projeto ZipZap.xcodeproj Xcode.
No projeto Xcode, selecione o esquema ZipZap (iOS Framework) , ZipZap (iOS Static Library) , ZipZap (macOS Framework) , ZipZap (macOS Static Library) , ZipZap (tvOS Framework) ou ZipZap (tvOS Static Library) no menu suspenso abaixo.
Agora você pode construir, testar (somente macOS) ou analisar com o esquema selecionado.
As bibliotecas construídas e os casos de teste estão em um subdiretório de ~/Library/Developer/Xcode/DerivedData .
Como um projeto integrado ao seu próprio espaço de trabalho:
No Terminal, execute cd workspace
e git submodule add https://github.com/pixelglow/ZipZap.git
.
Em seu espaço de trabalho Xcode, escolha o item de menu Arquivo > Adicionar arquivos ao "espaço de trabalho" e, no diretório ZipZap, escolha o projeto ZipZap.xcodeproj Xcode.
Em qualquer destino de projeto que usará ZipZap :
Em Build Phases > Link Binary With Libraries , adicione o libZipZap.a correspondente e qualquer outra biblioteca listada na seção Require Link abaixo.
Em Build Settings > Search Paths > Header Search Paths , adicione ../ZipZap .
Agora você pode construir, testar ou analisar esses alvos do projeto.
O cabeçalho inclui:
#import
Lendo um arquivo zip existente:
ZZArchive* oldArchive = [ZZArchive archiveWithURL:[NSURL fileURLWithPath:@"/tmp/old.zip"]erro:nil]; ZZArchiveEntry* firstArchiveEntry = oldArchive.entries[0];NSLog(@"O tamanho descompactado da primeira entrada é %lu bytes.", (unsigned long)firstArchiveEntry.uncompressedSize);NSLog(@"Os dados da primeira entrada são: %@." , [firstArchiveEntry newDataWithError:nil]);
Escrevendo um novo arquivo zip:
ZZArchive* newArchive = [[ZZArchive alloc] initWithURL:[NSURL fileURLWithPath:@"/tmp/new.zip"] opções:@{ZZOpenOptionsCreateIfMissingKey: @YES} erro:nil]; [nova atualização do arquivoEntradas: @[ [ZZArchiveEntry archiveEntryWithFileName:@"first.text" compress:YESdataBlock:^(NSError** erro) { return [@"olá, mundo" dataUsingEncoding:NSUTF8StringEncoding]; }] ]erro:nil];
Atualizando um arquivo zip existente:
ZZArchive* oldArchive = [ZZArchive archiveWithURL:[NSURL fileURLWithPath:@"/tmp/old.zip"]erro:nil]; [oldArchive updateEntradas: [oldArchive.entries arrayByAddingObject: [ZZArchiveEntry archiveEntryWithFileName:@"second.text" compress:YES dataBlock:^(NSError** erro) { return [@"tchau, mundo" dataUsingEncoding:NSUTF8StringEncoding]; }]]erro:nil];
Usos avançados: Receitas
Referências de API: Referências
Compilação : Xcode 7 e posterior.
Link : Somente bibliotecas do sistema; nenhuma biblioteca de terceiros é necessária.
ApplicationServices.framework (macOS) ou ImageIO.framework (iOS, tvOS)
Fundação.framework
libz.dylib
Execute : macOS 10.11 (El Capitan), iOS 9.3 ou tvOS 9.2 e posterior.
Siga-nos no Twitter: @pixelglow.
Levante uma questão sobre problemas do ZipZap.
ZipZap é licenciado com a licença BSD.
Dica com ChangeTip.