ZipZap是一个适用于 iOS、macOS 和 tvOS 的 zip 文件 I/O 库。
zip 文件是复合 Objective-C 文档的理想容器。 Zip 文件被广泛使用且易于理解。您可以随机访问他们的部分。该格式压缩得很好,并且具有广泛的操作系统和工具支持。因此,我们希望使这种格式成为您更轻松的选择。因此,该库具有以下特点:
易于使用的界面:公共 API 仅提供两个类!不过,您可以使用熟悉的NSArray集合和属性来查看 zip 文件。您可以通过熟悉的NSData 、 NSStream和 Image I/O 类来压缩、解压缩和重新压缩 zip 文件。
高效实施:我们优化了 zip 文件的读取和写入,以减少虚拟内存压力和磁盘文件抖动。根据复合文档的组织方式,更新单个条目可能比将相同数据写入单独的文件更快。
文件格式兼容性:由于ZipZap严格遵循 zip 文件格式规范,因此它可以与大多数 Mac、Linux 和 Windows zip 工具配合使用。
作为一个独立项目:
在终端中,运行git clone https://github.com/pixelglow/ZipZap.git
。
在ZipZap目录中,打开ZipZap.xcodeproj Xcode 项目。
在 Xcode 项目中,从下拉列表中选择ZipZap (iOS Framework) 、 ZipZap (iOS Static Library) 、 ZipZap (macOS Framework) 、 ZipZap (macOS Static Library) 、 ZipZap (tvOS Framework)或ZipZap (tvOS Static Library)方案向下。
您现在可以使用所选方案进行构建、测试(仅限 macOS)或分析。
构建的库和测试用例位于~/Library/Developer/Xcode/DerivedData的子目录中。
作为与您自己的工作区集成的项目:
在终端中,运行cd workspace
然后git submodule add https://github.com/pixelglow/ZipZap.git
。
在 Xcode 工作区中,选择“文件”>“将文件添加到“工作区””菜单项,然后在ZipZap目录中选择ZipZap.xcodeproj Xcode 项目。
在任何将使用ZipZap的项目目标中:
在Build Phases > Link Binary With Libraries中,添加相应的libZipZap.a以及下面的 Require Link 部分中列出的任何其他库。
在“构建设置”>“搜索路径”>“标头搜索路径”下,添加../ZipZap 。
您现在可以构建、测试或分析这些项目目标。
标头包括:
#import
读取现有的 zip 文件:
ZZArchive* oldArchive = [ZZArchive archiveWithURL:[NSURL fileURLWithPath:@"/tmp/old.zip"]error:nil]; ZZArchiveEntry* firstArchiveEntry = oldArchive.entries[0];NSLog(@"第一个条目的未压缩大小为 %lu 字节。", (unsigned long)firstArchiveEntry.uncompressedSize);NSLog(@"第一个条目的数据为: %@。" , [firstArchiveEntry newDataWithError:nil]);
写入新的 zip 文件:
ZZArchive* newArchive = [[ZZArchive alloc] initWithURL:[NSURL fileURLWithPath:@"/tmp/new.zip"] 选项:@{ZZOpenOptionsCreateIfMissingKey : @YES} 错误:nil]; [新存档更新条目:@[ [ZZArchiveEntry archiveEntryWithFileName:@"first.text" 压缩:YESdataBlock:^(NSError** 错误) { return [@"hello, world" dataUsingEncoding:NSUTF8StringEncoding]; }] ]错误:无];
更新现有的 zip 文件:
ZZArchive* oldArchive = [ZZArchive archiveWithURL:[NSURL fileURLWithPath:@"/tmp/old.zip"]error:nil]; [旧存档更新条目: [oldArchive.entries arrayByAddingObject: [ZZArchiveEntry archiveEntryWithFileName:@"second.text" 压缩:YES dataBlock:^(NSError** 错误) { return [@"再见,世界" dataUsingEncoding:NSUTF8StringEncoding]; }]]错误:无];
高级用途:食谱
API 参考: 参考
构建:Xcode 7 及更高版本。
链接:仅限系统库;不需要第三方库。
ApplicationServices.framework (macOS) 或ImageIO.framework (iOS、tvOS)
基础框架
libz.dylib
运行:macOS 10.11 (El Capitan)、iOS 9.3 或 tvOS 9.2 及更高版本。
在 Twitter 上关注我们:@pixelglow。
提出有关 ZipZap 问题的问题。
ZipZap已获得 BSD 许可证许可。
使用 ChangeTip 进行提示。