Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone SDK - Adding zipped content in resources and then unzipping into Documents folder

I have some resources (zipped) that needs to be shipped with my iphone application. When the app launches for the first time, this zipped file needs to be moved/copied to the Documents folder and unzip it there. User can then add more files to this path from the application. Can someone please suggest how can I achieve this?

Thanks!

like image 412
Mithin Avatar asked Sep 23 '09 04:09

Mithin


People also ask

How do you unzip a zip file on Mac?

Double-click on the zipped file to unzip any zipped file on your Mac. This will prompt the Archive Utility tool to unzip the files in the same folder the zipped file is in. Click appropriate icons to access the extracted files.


2 Answers

Based on your comment above:

The reason I want to add a compressed resource because there are multiple files. If I don't compress then I'll need to move files individually. I'll also need to maintain a list of files somewhere so that I can read the file name and then move them. I thought zipping and unzipping was a simpler solution.

You could add all the files to a folder in your bundle. When the app launches for the first time use fast enumeration to run through the folder and what ever it finds in that folder, it copies into the Documents folder. Handling folders within folders is slightly more complex (add recursion maybe). This way you don't have to worry about zip or tar, nor to keep a directory of files to install.

Just place the folder of files you want into Xcode's resources folder and tell it to import as a folder not as a group. That way the files get installed in your resources inside a folder instead of just as individual files all over the place.

EDIT:

Better yet, do what I say about putting all the files you want in one folder, add to your project, but not as a "Group", and then at first launch use:

[[NSFileManager defaultManager] copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error];

and it will copy your whole directory from one place to another. EASY!

like image 119
mahboudz Avatar answered Nov 15 '22 04:11

mahboudz


Add the libz.dylib Framework to your project, and include Deusty's NSData gzip category which will give you compression/decompression methods.

like image 44
Alex Reynolds Avatar answered Nov 15 '22 02:11

Alex Reynolds