2012-07-25 12 views
5

Ho un'applicazione per iPhone che ho sviluppato utilizzando ARC. Ho una cartella che contiene un mucchio di immagini nella mia directory di documenti che ho bisogno di comprimere ed e-mail. Il mio progetto utilizza ARC.Creazione di un file ZIP da una cartella nella directory dei documenti - Obiettivo C (ARC)

Qualcuno ha codice/collegamenti di esempio a una risorsa che sarebbe utile per me?

Sono stato in giro online e quello che riesco a trovare non è compatibile con ARC, anche quando afferma di esserlo.

+6

Sapete che è possibile disattivare ARC su base file per file, corretto? Quindi se hai un codice non ARC che ti piace, puoi ancora usarlo in un progetto ARC. ARC non è tutto-o-niente; è un'opzione per compilatore per file. http://stackoverflow.com/questions/6646052/how-can-i-disable-arc-for-a-single-file-in-a-project –

+0

E per chiarire ulteriormente, se si dispone di un progetto Xcode che costruisce tale una libreria Objective-C, e non ARC, puoi includere quel progetto nel tuo progetto e usare la libreria, indipendentemente dal fatto che sia ARC o meno. –

+0

Oh, no, non ne ero a conoscenza, grazie. –

risposta

8

Scaricare e trascinare Objective-Zip, MiniZip e ZLib trascinandoli nel progetto da questo collegamento http://code.google.com/p/objective-zip/downloads/list (Objective-zip). importare i file: ZipFile.h, ZipException.h, FileInZipInfo.h, ZipWriteStream.h, ZipReadStream.h, zlib.h

Usa questo codice. Vedere di seguito:

NSString *stringPath1 = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]]; 
    NSString *FileName=[stringPath1 stringByAppendingPathComponent:@"Your file name"]; 


    NSString *stringPath=[stringPath1 stringByAppendingPathComponent:[@"Your file name" stringByAppendingFormat:@".zip"]]; 
    NSArray *files = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:FileName error:&error]; 
    ZipFile *zipFile = [[ZipFile alloc]initWithFileName:stringPath mode:ZipFileModeCreate]; 

    for(int i = 0;i<files.count;i++){ 

     id myArrayElement = [files objectAtIndex:i]; 
     NSLog(@"add %@", myArrayElement); 

     NSString *path = [FileName stringByAppendingPathComponent:myArrayElement]; 
     NSDictionary *attributes = [[NSFileManager defaultManager]attributesOfItemAtPath:path error:&error]; 
     NSDate *Date = [attributes objectForKey:NSFileCreationDate]; 

     ZipWriteStream *streem = [zipFile writeFileInZipWithName:myArrayElement fileDate:Date compressionLevel:ZipCompressionLevelBest]; 
     NSData *data = [NSData dataWithContentsOfFile:path]; 
     [streem writeData:data]; 
     [streem finishedWriting]; 
    } 

    [zipFile close]; 
+0

scusa ma il link che hai fornito è ormai morto. – mcy

+0

Mi dispiace ma è stato più di 1 anno fa ... –

+2

Trovato un collegamento funzionante a questo progetto: https://github.com/flyingdolphinstudio/Objective-Zip –

Problemi correlati