2013-04-19 29 views
8

Po StoreKit pobiera pakiet treści IAP Zwraca bibliotece NSURL mi który wygląda tak:Jak rozpakować plik .zip na iOS?

file: // localhost/private/var/mobile/Applications/45EF2B3A-3Cab-5A44-4B4A-631A122A4299/Library/Caches/BA32BC55-55DD-3AA4-B4AC-C2A456622229.zip/

Pomimo wszystkich źródeł znalazłem twierdząc, że StoreKit rozpina pakiet treść po pobraniu, to ręce mi ponad ZIP. To archiwum prawdopodobnie zawiera strukturę pliku pakietu treści. Ale jak to rozpakować?

+1

W aplikacji Zakup treści pobrane ze sklepu z aplikacjami nie są skompresowane, więc nie trzeba ich rozpakowywać, można traktować je jako katalog (zobacz http://stackoverflow.com/a/19660668/897093) – leafcutter

Odpowiedz

31

Korzystając SSZipArchive

można rozpakować za pomocą tego

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *outputPath = [documentsDirectory stringByAppendingPathComponent:@"/ImagesFolder"]; 

NSString *zipPath = Your zip file path; 

[SSZipArchive unzipFileAtPath:zipPath toDestination:outputPath delegate:self]; 

Nadzieja to pomaga tobie.

9

Jest doskonałym narzędziem 3rd party na skompresowanie/rozpakować pliki do iPhone

https://github.com/soffes/ssziparchive

Bardzo prosty w użyciu. Mam nadzieję, że pomaga !!

Edit:

Szybka metoda stworzyłem która odbywa URL pobiera ZIP i rozpina go

-(void)downloadAndUnzip : (NSString *)sURL_p : (NSString *)sFolderName_p 
{ 
    dispatch_queue_t q = dispatch_get_global_queue(0, 0); 
    dispatch_queue_t main = dispatch_get_main_queue(); 
    dispatch_async(q, ^{ 
     //Path info 
     NSURL *url = [NSURL URLWithString:sURL_p]; 
     NSData *data = [NSData dataWithContentsOfURL:url]; 
     NSString *fileName = [[url path] lastPathComponent]; 
     NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName]; 
     [data writeToFile:filePath atomically:YES]; 
     dispatch_async(main,^


       { 
         //Write To 
         NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
         NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder 
         NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:sFolderName_p]; 

         [SSZipArchive unzipFileAtPath:filePath toDestination:dataPath]; 

        }); 
}); 

}