CocoaPods trunk is moving to be read-only. Read more on the blog, there are 18 months to go.

CBHCompressKit 1.0.2

CBHCompressKit 1.0.2

Maintained by Chris Huxtable.



CBHCompressKit

release pod licence coverage

CBHCompressKit provides CBHCompressor and CBHDecompressor which provide an easy-to-use means of compressing NSData. They support one-call and stream compression. Additionally CBHCompressKit provides a NSData category to make one-call compression even easier.

Supported Algorithms:

  • LZ4: A high-speed compression algorithm.
  • LZMA: A high compression ratio algorithm.
  • ZLib: A balanced, cross platform compression algorithm/format.
  • LZFSE: A balanced, Apple only compression algorithm.

Use

Most use cases will only need to use the NSData categories.

Examples:

Compress NSData with LZ4:

NSData *data = /* some data */
NSData *compressed = [data compressUsingLZ4];

Decompress NSData with LZ4:

NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingLZ4];

Compress NSData with LZMA:

NSData *data = /* some data */
NSData *compressed = [data compressUsingLZMA];

Decompress NSData with LZMA:

NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingLZMA];

Compress NSData with ZLib:

NSData *data = /* some data */
NSData *compressed = [data compressUsingZLib];

Decompress NSData with ZLib:

NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingZLib];

Compress NSData with LZFSE:

NSData *data = /* some data */
NSData *compressed = [data compressUsingLZFSE];

Decompress NSData with LZFSE:

NSData *compressed = /* some compressed data */
NSData *data = [compressed decompressUsingLZFSE];

More complicated examples such as with a stream.

Examples:

Compress a stream:

id io = /* an object that returns data in chunks */

CBHCompressAlgorithm algorithm = CBHCompressAlgorithm_LZMA;
NSData *compressed = [CBHCompressor compressUsingAlgorithm:algorithm inBlock:^(CBHCompressor *compressor) {
	while ( [io hasMoreData] )
	{
		[compressor appendData:[io data]];
	}
}];

Decompress a stream:

id io = /* an object that returns data in chunks */

CBHCompressAlgorithm algorithm = CBHCompressAlgorithm_LZMA;
NSData *decompressed = [CBHDecompressor decompressUsingAlgorithm:algorithm inBlock:^(CBHDecompressor *decompressor) {
	while ( [io hasMoreData] )
	{
		[decompressor appendData:[io data]];
	}
}];

Licence

CBHCompressKit is available under the ISC license.