Подтвердить что ты не робот

Скачать и распаковать файл в iOS

Я хочу загрузить zip файл, содержащий папку с большим количеством файловых аудио, которые используют для моего произношения в словаре. Я использую ASIHTTPRequest, чтобы загрузить его, и моя проблема: "Я не знаю, как распаковать этот файл". Я пытался использовать SSZipArchive и ZipArchive, оба из них основаны на minizip, но я получил ошибку при компиляции кода Undefined symbols for architecture i386: "_OBJC_CLASS_$_ZipArchive", referenced from: objc-class-ref in AppDelegate.o. Так вы могли бы дать мне несколько советов.

4b9b3361

Ответ 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 файлах.