[英]iPhone: Downloading zip and extracting in main bundle subdirectory at runtime
我想扩展我的iPhone应用程序,应用程序将zip文件下载到子目录,然后提取它,然后加载zip中的图像。
任何想法如何在运行时解压缩和访问图像? 一些想法真的很开心。
问候,
我过去曾经使用过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];
您无法提取到您的包中。 使用[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
获取可写入目录的路径。
您可以使用http://code.google.com/p/ziparchive/中的代码从zip存档中提取文件。
如果您将ZipArchive
添加到项目中,请记住还要添加框架。 正确的框架是libz.dylib
。 最新版本(Xcode 4.2)是1.2.5 。
(在目标的构建阶段选项卡中将库添加到包含库的部分。)
我建议你使用ssziparchive bcoz它支持ARC
和Non ARC
项目。
SSZipArchive.h
, SSZipArchive.m
和minizip
添加到项目中。 libz
(现在的libz1.2.5
)库的最新版本添加到目标。 你不需要对ARC
做任何事情。 SSZipArchive
将检测您是否使用ARC
并添加所需的内存管理代码。
代码将是这样的:
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
// Unzipping
//If your zip is in document directory than use this code
NSString *zipPath = [documentsDirectory stringByAppendingPathComponent:@"mediadata.zip"];
//else if zip file is in bundle than use this code
NSString *zipPath = [[NSBundle mainBundle] pathForResource:@"mediadata" ofType:@"zip"];
NSString *destinationPath = [documentsDirectory stringByAppendingPathComponent:@"MediaData"];
if( [SSZipArchive unzipFileAtPath:zipPath toDestination:destinationPath] != NO ) {
//unzip data success
//do something
NSLog(@"Dilip Success");
}else{
NSLog(@"Dilip Error");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.