iPhone SDK - 在资源中添加压缩内容,然后解压缩到Documents文件夹中

时间:2009-09-23 04:32:18

标签: iphone resources zip unzip

我有一些资源(压缩)需要随我的iphone应用程序一起提供。当应用程序第一次启动时,需要将此压缩文件移动/复制到Documents文件夹并将其解压缩到那里。然后,用户可以从应用程序向此路径添加更多文件。有人可以建议我如何实现这个目标?

谢谢!

3 个答案:

答案 0 :(得分:6)

根据您的评论:

  

我想添加压缩的原因   资源因为有多个   文件。如果我不压缩那么我会   需要单独移动文件。生病   还需要维护一个文件列表   某处,以便我可以阅读该文件   命名,然后移动它们。我想   压缩和解压缩更简单   溶液

您可以将所有文件添加到捆绑包中的文件夹中。当应用程序首次启动时,使用快速枚举来运行该文件夹以及它在该文件夹中找到的内容,它将复制到Documents文件夹中。处理文件夹中的文件夹稍微复杂一些(可能会添加递归)。这样您就不必担心zip或tar,也不必保留要安装的文件目录。

只需将您想要的文件夹放入Xcode的资源文件夹,并告诉它作为文件夹导入而不是作为一个组。这样,文件就会安装在文件夹内的资源中,而不是整个地方的单个文件。

编辑:

更好的是,按照我的说法将所需的所有文件放在一个文件夹中,添加到您的项目中,但不是作为“组”,然后在首次启动时使用:

[[NSFileManager defaultManager] copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error];

它会将整个目录从一个地方复制到另一个地方。 EASY!

答案 1 :(得分:4)

libz.dylib框架添加到您的项目中,并添加Deusty's NSData gzip category,它将为您提供压缩/解压缩方法。

答案 2 :(得分:3)

虽然这可以通过使用libz.dylib来实现,但它确实是不必要的,因为它可以节省很少(如果有的话)空间。您的应用程序包在传输到手机时已经被压缩了。压缩之上的压缩通常几乎不会产生额外的压缩。

亲自尝试一下。您可能会发现使用解压缩的内容运送您的应用可能会占用与压缩内容一样多的空间。