Tutorial: How to play with zip files in iOS; Aasim Naseem, January 11, 2013 | Read Count: 12,507April 9, 2025 Category: My Tutorials > iOSHello 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; 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 IslamJune 6, 2025 | Read Count: 305Economic impact of Eid-ul-Adha PMP CertificationMay 23, 2025 | Read Count: 507Best PMP Study Resources for 2025 (Books, Courses, Tools & More) Agile & FrameworksMay 7, 2025 | Read Count: 483Agile vs Scrum: Finally Understanding the Difference Agile & FrameworksApril 25, 2025 | Read Count: 509When Not To Use Agile: 5 Signs You Need a Different Approach iOS
iOS Pattern Colors are Not Supported by the iPhone SDK Prior to 3.0 February 4, 2011 | Read Count: 14,463May 5, 2025 Category: My Tutorials > iOSLast day i opened and compiled an old project of iPhone; I’m using Xcode 3.2.5 with iOS 4.2 on Mac OS X 10.6.6; When i complied that project I got the following error in multiple xib files Pattern colors are not supported by the iPhone SDK… Read More
iOS Beta Builder :: Wireless Distribution of Your Adhoc Archive June 5, 2013 | Read Count: 12,483April 9, 2025 Category: My Tutorials > iOS Hey .. how’s work going? It’s good Han !!! … good good … So you have done with your release and verified with QA after some bug fixing; That’s great; You done a good job; Now Its time to share the Adhoc with client; Ok… Read More
iOS Newsstand issue with AppStore build; February 29, 2012 | Read Count: 13,503April 27, 2025 Category: My Tutorials > iOSLast evening, I was trying to submit my application over the app store and got the following error regarding Newsstand; I’m using Mac OS X 10.6.8 with Xcode Version 4.2 (Build 4C199) and iOS 5.0. To include newsstand features, the info.plist must include uinewsstandapp=true. But I… Read More
I am trying to open a password protected zip file but cant open it. Can you help me regarding that? Reply