web-dev-qa-db-fra.com

Décompresser les fichiers téléchargés dans iOS

En utilisant ASIHTTPRequest, j'ai téléchargé un fichier Zip contenant un dossier avec plusieurs fichiers audio. J'ai essayé de décompresser le fichier avec SSZipArchive et ZipArchive, qui sont tous deux basés sur minizip.

Lorsque je compile le code, j'obtiens cette erreur: Undefined symbols for architecture i386: "_OBJC_CLASS_$_ZipArchive", referenced from: objc-class-ref in AppDelegate.o.

Comment décompresser ce fichier dans iOS?

27
Huy Tran

J'ai utilisé ZipArchive avec succès dans le passé. Il est assez léger et simple à utiliser, prend en charge la protection par mot de passe, plusieurs fichiers à l'intérieur d'un Zip, ainsi que la compression et la décompression.

L'utilisation de base est:

NSString *filepath = [[NSBundle mainBundle] pathForResource:@"ZipFileName" ofType:@"Zip"];
ZipArchive *zipArchive = [[ZipArchive alloc] init];
[zipArchive UnzipOpenFile:filepath Password:@"xxxxxx"];
[zipArchive UnzipFileTo:{pathToDirectory} overWrite:YES];
[zipArchive UnzipCloseFile];
[zipArchive release];

plus d'exemples sur ce paquet ici

J'ai également essayé SSZipArchive dans certains projets. La ligne ci-dessous dézipperait votre fichier Zip.

[SSZipArchive unzipFileAtPath:path toDestination:destination];
49
Srikar Appalaraju

Pour commencer, dans iOS 7, Apple a introduit la possibilité de compresser/décompresser des fichiers en mode natif. Vous avez également la possibilité d'envoyer les fichiers Zip via Mail, Messages, Airdrop et "Ouvrir dans". Le La clé est la suivante: le fichier Zip doit être pris en charge par iOS Certains le sont et d'autres ne le sont pas. La première étape: découvrez si votre fichier est pris en charge. Faites-le par une simple vérification de votre nouveau fichier enregistré . Essayez de l'ouvrir. S'il est bloqué sur "En attente ...", il est probablement non pris en charge. Essayez une autre bibliothèque ou utilisez une solution de contournement si c'est le cas.

Maintenant, faire cela par programme nécessite actuellement l'utilisation d'une bibliothèque tierce pour enregistrer les fichiers Zip et les extraire. Ce n'est pas idéal, car beaucoup de personnes/entreprises évitent de les utiliser. Cela étant dit, la réponse est correcte, ZipArchive est un excellent outil tiers, d'autant plus qu'il prend désormais en charge Swift. Je recommanderais de l'utiliser jusqu'à Apple introduit une bibliothèque native.

2
Henry F