Sample code for 30+ languages & platforms
Objective-C

Transition from BeginCompressStringENC to FirstChunk/LastChunk

Provides instructions for replacing deprecated BeginCompressStringENC method calls with using FirstChunk/LastChunk properties.

Chilkat Objective-C Downloads

Objective-C
#import <CkoStringBuilder.h>
#import <CkoCompression.h>
#import <NSString.h>
#import <CkoBinData.h>

BOOL success = NO;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

CkoStringBuilder *sbCompressedBase64 = [[CkoStringBuilder alloc] init];

CkoCompression *compress = [[CkoCompression alloc] init];
compress.Algorithm = @"deflate";
compress.Charset = @"utf-8";
compress.EncodingMode = @"base64";

CkoStringBuilder *sbIndex = [[CkoStringBuilder alloc] init];

// ----------------------------------------------------------------------------------
// This is the deprecated way of compressing in chunks using Begin/More/End methods..
// ----------------------------------------------------------------------------------
int i;
for (i = 0; i <= 24; i++) {
    // Note: It is possible (and normal) for a BeginCompress* or MoreCompress* method to return
    // an empty string (or 0 bytes).  When this happens, the input data is not lost.  It will be flushed
    // in a subsequent call.
    [sbIndex Clear];
    [sbIndex AppendInt: [NSNumber numberWithInt: i]];
    if (i == 0) {
        [sbCompressedBase64 Append: [compress BeginCompressStringENC: [sbIndex GetAsString]]];
    }
    else {
        [sbCompressedBase64 Append: [compress MoreCompressStringENC: [sbIndex GetAsString]]];
    }

    [sbCompressedBase64 Append: [compress MoreCompressStringENC: @": This is a line of data to be compressed...\r\n"]];
}

// Flush any remaining output.
[sbCompressedBase64 Append: [compress EndCompressStringENC]];

NSLog(@"%@",@"The base64 encoded compressed text:");
NSLog(@"%@",[sbCompressedBase64 GetAsString]);

// Decompress in one call:
NSString *originalText = [compress DecompressStringENC: [sbCompressedBase64 GetAsString]];
NSLog(@"%@",originalText);

// ----------------------------------------------------------------------------------
// This is new way of compressing in chunks using FirstChunk and LastChunk properties
// ----------------------------------------------------------------------------------

[sbCompressedBase64 Clear];

compress.FirstChunk = YES;
compress.LastChunk = NO;

CkoBinData *bdCompressed = [[CkoBinData alloc] init];
CkoStringBuilder *sbUncompressedChunk = [[CkoStringBuilder alloc] init];

for (i = 0; i <= 24; i++) {
    if (i == 24) {
        compress.LastChunk = YES;
    }

    [sbUncompressedChunk Clear];
    [sbUncompressedChunk AppendInt: [NSNumber numberWithInt: i]];
    [sbUncompressedChunk Append: @": This is a line of data to be compressed...\r\n"];

    [compress CompressSb: sbUncompressedChunk binData: bdCompressed];

    compress.FirstChunk = NO;
}

NSLog(@"%@",@"The base64 encoded compressed text:");
NSLog(@"%@",[bdCompressed GetEncoded: @"base64"]);

// Decompress in one call:
originalText = [compress DecompressStringENC: [bdCompressed GetEncoded: @"base64"]];
NSLog(@"%@",originalText);