ZipZap は、iOS、macOS、tvOS 用の zip ファイル I/O ライブラリです。
zip ファイルは、複合 Objective-C ドキュメントの理想的なコンテナーです。 zip ファイルは広く使用されており、よく理解されています。パーツにランダムにアクセスできます。この形式は適切に圧縮され、オペレーティング システムとツールが広範囲にサポートされています。したがって、この形式をさらに簡単に選択できるようにしたいと考えています。したがって、このライブラリには次のような特徴があります。
使いやすいインターフェース: パブリック API が提供するクラスは 2 つだけです。それでも、使い慣れた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"] options:@{ZZOpenOptionsCreateIfMissingKey : @YES} error:nil]; [newArchive updateEntries: @[ [ZZArchiveEntry archiveEntryWithFileName:@"first.text" compress:YESdataBlock:^(NSError** エラー) { return [@"hello, world" dataUsingEncoding:NSUTF8StringEncoding]; }] ]エラー:nil];
既存の zip ファイルを更新する:
ZZArchive* oldArchive = [ZZArchive archiveWithURL:[NSURL fileURLWithPath:@"/tmp/old.zip"]error:nil]; [oldArchive updateEntries: [oldArchive.entries arrayByAddingObject: [ZZArchiveEntry archiveEntryWithFileName:@"second.text" compress:YES dataBlock:^(NSError** エラー) { return [@"さようなら、世界" dataUsingEncoding:NSUTF8StringEncoding]; }]]エラー:nil];
高度な使用法: レシピ
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 を使用したチップ。