Skip to content
Aasim's Web Corner
Aasim's Web Corner

Ink is better than the best memory.

  • Odysseys & Artistry
    • Saunterer Soul
    • My Poetry
    • My Sketch Work
  • Project Management
    • Agile & Frameworks
    • PMP Certification
  • Digital Diary
    • History
    • Islam
    • Life Around Us
    • My Bookshelf
  • My Tutorials
    • Amazon Kindle
    • Android
    • Aspect Oriented Programming
    • BlackBerry
    • Code Repositories
    • iOS
    • Java
    • JavaScript
    • Linux
    • Random Tips
Connect with me
Aasim's Web Corner

Ink is better than the best memory.

How to Use Zip File in IOS - AasimNaseem.com

Tutorial: How to play with zip files in iOS;

Aasim Naseem, January 11, 2013 | Read Count: 12,490April 9, 2025
Category: My Tutorials > iOS

Hello Dev mates…
Hope you are enjoying your work in winters; (:

Few days back I was working on a project where I needed to compress some files to create a zip archive; Although my teammate has done much of the work, I just refined some business logic and finalized the code to complete this feature; So lets start and see how we achieved this;

1. Setup your project

  • Download an open source library from here; It is a very handy library for zip/unzip operations, written by Shannon Ai (acsolu@gmail.com)
  • Create new project in Xcode (or open your existing one)
  • Add libz.1.2.3.dylib into your project frameworks;
  • Drag and drop downloaded library into your project and chose “copy items” option from a popup window;
  • Add the following values in to your Constants file; If you are using .pch file, then declare then using @define macro;
//in .h file
FOUNDATION_EXPORT NSString *const kZipFileName; //name of zip file to be created;
FOUNDATION_EXPORT NSString *const kDirNameToCompress; //name of directory who's contents will be compressed;
FOUNDATION_EXPORT NSString *const kTargetDirName;//directory name where zip file will be extracted;
FOUNDATION_EXPORT NSString *kZipFileCreateErrorMessage; //error message string;
FOUNDATION_EXPORT NSString *kErroMessageTitle; //error title;
FOUNDATION_EXPORT NSString *kOKButtonTitle; //Title of cancel button over alert view;

//in .m file
NSString *const kZipFileName = @"CompressedData.zip";
NSString *const kTargetDirName = @"AnyDirName";
NSString *const kDirNameToCompress @"dirToZip_OR_fileNameToZip";
FOUNDATION_EXPORT NSString *kZipFileCreateErrorMessage = @"Unable to to create zip file. Please try again later";
FOUNDATION_EXPORT NSString *kErroMessageTitle = @"Error";
FOUNDATION_EXPORT NSString *kOKButtonTitle = @"Ok";

2. Create a zip file in any directory under/Document;

  • #import “ZipArchive.h” into your class where you want to write zip code;
  • Use the following code to create a zip file;
-(void) createZipFile{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *zipFile = [documentsDirectory stringByAppendingPathComponent:kZipFileName];//The place where zip file will be created;
ZipArchive *zip = [[ZipArchive alloc] init];
BOOL result = [zip CreateZipFile2:zipFile];//this line will create an empty zip file with 0 KB in size;
if(result){
NSError *error;
NSArray *allFiles = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:kDirNameToCompress error:&error];//get list of all files in directory which need to compress;
for(int index = 0; index<allFiles.count; index++){
id singleFileName = [allFiles objectAtIndex:index];
NSString *singleFilePath = [kDirNameToCompress stringByAppendingPathComponent:singleFileName];
[zip addFileToZip:singleFilePath newname:singleFileName];//one file has been added into zip archive
}//end for
[zip CloseZipFile2];
[zip release];//ignore this if you are using ARC
}else{
[self showErrorMessage:kZipFileCreateErrorMessage withTitle:kErroMessageTitle];
}//end else
}//end createZipFile
//------------------------------------------------------
-(void) showErrorMessage:(NSString *)paramErrorMessage withTitle:(NSString*) paramTitle{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:paramTitle message:paramErrorMessage
delegate:nil
cancelButtonTitle:kOKButtonTitle otherButtonTitles:nil];
[alert show];
[alert release];//ignore this if you are using ARC;
}//showErrorMessage

3. Decompress a zip archive;

  • #import “ZipArchive.h” into your class where you want to write unzip code;
  • Use the following code to extract a zip file;
-(void) decompressZipArchive{
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *zipFilePath = [documentsDirectory stringByAppendingPathComponent:kZipFileName];
NSString *targetDirPath = [documentsDirectory stringByAppendingPathComponent:kTargetDirName];
ZipArchive* zipArchive = [[ZipArchive alloc] init];
if( [zipArchive UnzipOpenFile:zipFilePath] ) {
if( [zipArchive UnzipFileTo:targetDirPath overWrite:YES] != NO ) {//one magical line
//do whatever you want to do with uncompressed data
//or just leave as it is after handling errors
}//end if
[zipArchive UnzipCloseFile];
}//end if
[zipArchive release];//ignore this if you are using ARC
}//end decompressZipArchive

Thats all; You can use this code as it is into your project; Leave a comment if you find yourself in any trouble;

Happy coding, and happy winters;

Flag Counter

Author Profile

Aasim Naseem
Hey, Thanks for your interest. I’m a PMP, AWS Solutions Architect, and Scrum Master certified professional with 17+ years of hands-on experience leading projects, building teams, and helping organizations deliver software solutions better, faster, and smarter.

Outside of work, I’ve got a deep curiosity for history — especially ancient civilizations like Egypt. I also enjoy reflecting on the everyday moments that shape how we live and work. This blog is my space to share insights, lessons, and thoughts from both my professional journey and personal interests.

Thanks for reading — and I hope you will find something here that matches your interest.
Latest entries
  • Economic impact of Eid ul Adha - AasimNaseem.comIslamJune 6, 2025 | Read Count: 282Economic impact of Eid-ul-Adha
  • Best PMP Exam Study Resources - AasimNaseem.comPMP CertificationMay 23, 2025 | Read Count: 492Best PMP Study Resources for 2025 (Books, Courses, Tools & More)
  • agile vs scrum - AasimNaseem.comAgile & FrameworksMay 7, 2025 | Read Count: 463Agile vs Scrum: Finally Understanding the Difference
  • When Agile shouldn’t Use - AasimNaseem.comAgile & FrameworksApril 25, 2025 | Read Count: 493When Not To Use Agile: 5 Signs You Need a Different Approach
iOS

Post navigation

Previous post
Next post

Related Posts

iOS

Not enough frames in Stack – iO|

January 10, 2011 | Read Count: 14,500May 5, 2025

Category: My Tutorials > iOSIf you are getting this error message in your console while running your app on iPhone/iPod (specially on 1G, having ios < 3.2) dyld: Symbol not found: _OBJC_CLASS_$_UIPopoverController Referenced from: /var/mobile/Applications/5BC198AF-22AF-4581-8787-E267D359E059/FilesAnyWhere.app/<your_app_name> Expected in: /System/Library/Frameworks/UIKit.framework/UIKit in /var/mobile/Applications/5BC198AF-22AF-4581-8787-E267D359E059/FilesAnyWhere.app/<your_app_name> <em>Data Formatters temporarily unavailable, will re-try after a 'continue'. (Not…

Read More
iOS Integrate AdMob in iOS Application - AasimNaseem.com

Integrate AdMob in iOS Application;

January 10, 2012 | Read Count: 13,487April 27, 2025

Category: My Tutorials > iOSHello Everyone; Hope winters are going good around you; Today’s menu is again simple and short; We’ll learn how to integrate AdMob in an iOS application. I will show you the easiest way to integrate AdMob in the application. So lets start; Author Profile Aasim Naseem Hey,…

Read More
iOS iOS Code Tips - AasimNaseem.com

Code Chunks – iOS

February 5, 2011 | Read Count: 14,408April 27, 2025

Category: My Tutorials > iOSHello Everyone;  Hope weekend is going well. Today’s menu is really simple; I will give you some tips regarding iPhone application development. I used them recently, so want to share with you people. Here they are. 1. Screen Resolution At the time of this post, the…

Read More

Comment

  1. iamiphonedeveloper says:
    October 24, 2013 at 2:39 pm

    I am trying to open a password protected zip file but cant open it. Can you help me regarding that?

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Economic impact of Eid-ul-Adha
    Economic impact of Eid-ul-Adha
    June 6, 2025 | Read Count: 282
  • Best PMP Study Resources for 2025 (Books, Courses, Tools & More)
    Best PMP Study Resources for 2025 (Books, Courses, Tools & More)
    May 23, 2025 | Read Count: 492
  • Agile vs Scrum: Finally Understanding the Difference
    Agile vs Scrum: Finally Understanding the Difference
    May 7, 2025 | Read Count: 463
  • When Not To Use Agile: 5 Signs You Need a Different Approach
    When Not To Use Agile: 5 Signs You Need a Different Approach
    April 25, 2025 | Read Count: 493
  • Quran on Peace and Kindness
    Quran on Peace and Kindness
    April 20, 2025 | Read Count: 452

Posts from Past

  • June 2025
  • May 2025
  • April 2025
  • January 2025
  • November 2024
  • April 2024
  • October 2022
  • August 2021
  • September 2020
  • May 2020
  • April 2019
  • January 2019
  • September 2018
  • July 2015
  • June 2015
  • November 2014
  • September 2014
  • April 2014
  • June 2013
  • May 2013
  • February 2013
  • January 2013
  • December 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • March 2012
  • February 2012
  • January 2012
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009

Categories List

  • Agile & Frameworks
  • Amazon Kindle
  • Android
  • Aspect Oriented Programming
  • BlackBerry
  • Blog
  • Code Repositories
  • History
  • iOS
  • Islam
  • Java
  • JavaScript
  • Life Around Us
  • Linux
  • My Bookshelf
  • My Poetry
  • My Sketch Work
  • PMP Certification
  • Random Tips
  • Saunterer Soul

Recent Posts

  • Economic impact of Eid-ul-Adha
  • Best PMP Study Resources for 2025 (Books, Courses, Tools & More)
  • Agile vs Scrum: Finally Understanding the Difference
  • When Not To Use Agile: 5 Signs You Need a Different Approach
  • Quran on Peace and Kindness

Recent Comments

  1. Aasim Naseem on When Not To Use Agile: 5 Signs You Need a Different Approach
  2. Aasim Naseem on When Not To Use Agile: 5 Signs You Need a Different Approach
  3. Masjid Wazir Khan, Lahore Pakistan - Aasim's Web Corner on Everlasting Art of Badshahi Masjid Lahore Pakistan
  4. Rishi Kumar on When Not To Use Agile: 5 Signs You Need a Different Approach
  5. Best PMP Study Resources for 2025 (Books, Courses, Tools & More) - Aasim's Web Corner on PMP Exam Eligibility 2025: 3 Things You Need to Know
©2025 Aasim's Web Corner | WordPress Theme by SuperbThemes