Compresser/Décompresser NSString en objective-c (iphone) à l'aide de GZIP ou deflate

J'ai une web-service en cours d'exécution sur Windows Azure qui renvoie du JSON que je consomme dans mon application iPhone.

Malheureusement, Windows Azure ne semble pas à l'appui de la compression de dynamique de réponses encore (longue histoire) j'ai donc décidé de le contourner par le renvoi d'une non compressé JSON emballage, qui contient un comprimé (à l'aide de GZIP) de la chaîne.

e.g

{"Error":null,"IsCompressed":true,"Success":true,"Value":"vWsAAB+LCAAAAAAAB..etc.."}

... où est la valeur de comprimé de chaîne d'un objet complexe représenté en JSON.

C'était vraiment facile à mettre en œuvre sur le serveur, mais pour la vie de moi je ne peux pas comprendre comment décompresser un format NSString en non compressé NSString, tous les exemples que je peux trouver pour zlib etc sont à faire avec les fichiers etc.

Quelqu'un peut me donner des indices sur la façon de faire cela? (Je serais également heureux de trouver une solution plus utilisé dégonfler comme j'ai pu changer de serveur-côté de la mise en œuvre utilisation de dégonfler un peu trop).

Merci!!

Steven

Edit 1: Aaah, je vois que ASIHTTPRequest est à l'aide de la fonction suivante dans le code source:

//uncompress gzipped data with zlib
+ (NSData *)uncompressZippedData:(NSData*)compressedData;

... et je suis conscient que je peux convertir NSString à NSData, donc je vais voir si cela me mène nulle part!

Edit 2: Malheureusement, la méthode décrite dans l'Édition 1 de ne pas me conduire n'importe où.

Edit 3: en Suivant les conseils ci-dessous, concernant le codage base64/décodage, je suis venu avec le code suivant. Le encodedGzippedString est comme vous pouvez le deviner, une chaîne de caractères "Bonjour, mon nom est Steven Elliott", qui est au format gzip et puis converti en une chaîne base64. Malheureusement, le résultat qui s'imprime en utilisant NSLog est juste vide.

NSString *encodedGzippedString = @"GgAAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyK+uE6X2SJPiyZ93eaX+TI9Lcuiatvx/wOwYc0HGgAAAA==";
NSData *decodedGzippedData = [NSData dataFromBase64String:encodedGzippedString];
NSData* unGzippedJsonData = [ASIHTTPRequest uncompressZippedData:decodedGzippedData];   
NSString* unGzippedJsonString = [[NSString alloc] initWithData:unGzippedJsonData encoding:NSASCIIStringEncoding];       
NSLog(@"Result: %@", unGzippedJsonString);