Я хочу загрузить zip файл, содержащий папку с большим количеством файловых аудио, которые используют для моего произношения в словаре. Я использую ASIHTTPRequest, чтобы загрузить его, и моя проблема: "Я не знаю, как распаковать этот файл". Я пытался использовать SSZipArchive
и ZipArchive
, оба из них основаны на minizip
, но я получил ошибку при компиляции кода Undefined symbols for architecture i386: "_OBJC_CLASS_$_ZipArchive", referenced from: objc-class-ref in AppDelegate.o
. Так вы могли бы дать мне несколько советов.
Скачать и распаковать файл в iOS
Ответ 1
Я использовал ZipArchive с успехом в прошлом. Он довольно веселый и простой в использовании, поддерживает защиту паролем, несколько файлов внутри ZIP, а также сжимает и распаковывает.
Основное использование:
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];
больше примеров об этом пакете здесь
Я также пробовал SSZipArchive в некоторых проектах. Внизу строка будет распаковать ваш zip файл.
[SSZipArchive unzipFileAtPath:path toDestination:destination];
Ответ 2
Для начала, в iOS 7, Apple представила возможность изначально zip/распаковать файлы. У вас также есть возможность отправить почтовые файлы через Mail, Messages, Airdrop и "Open in". Ключ: Почтовый файл должен поддерживаться iOS. Некоторые из них, а некоторые - нет. Первый шаг. Узнайте, поддерживается ли ваш файл. Сделайте это простой проверкой вашего вновь сохраненного файла. Попытайтесь открыть его. Если он застрял в "Ожидание...", он, вероятно, не поддерживается. Попробуйте использовать другую библиотеку или используйте обходной путь, если это так.
Теперь, делая это программно В настоящее время требуется использование сторонней библиотеки для сохранения zip файлов и их извлечения. Это не идеально, поскольку многие люди/компании избегают их использования. При этом ответ был отмечен правильно, ZipArchive - отличный инструмент для сторонних разработчиков, тем более что теперь он поддерживает Swift. Я бы рекомендовал использовать его, пока Apple не представит родную библиотеку.
Ответ 3
В iOS6 ZIP файл, похоже, обрабатывается как папка. У меня был успех, просто сделав следующее:
[[NSFileManager defaultManager] copyItemAtPath:[NSURL URLForCachesDirectoryWithAppendedPath:@"ZIP_FILE.zip/Contents/Test.m4a"].path
toPath:[NSURL URLForCachesDirectoryWithAppendedPath:@"Test.m4a"].path
error:nil];
Возможно, вы даже можете сделать список каталогов для распаковки файлов с неизвестным контентом. Однако не знаю о защищенных паролем ZIP файлах.