将文件夹移动到Documents目录

时间:2010-11-04 19:16:47

标签: iphone ios cocoa-touch bundle

我正在处理的iPhone应用程序在应用程序目录中捆绑了20MB的图像,我需要随着时间的推移将新图像写入文档目录。

理想情况下,我想初始文件夹移动到文档目录,复制文件夹意味着浪费20mb的用户磁盘空间。

如果失败,我将在文档目录中创建所需的结构并保留初始图像,但这意味着每次我想要显示图像时都要检查两个位置。

在构建图像路径时,有没有办法自动搜索应用程序包和文档目录?

2 个答案:

答案 0 :(得分:1)

回答您的第一个问题:您无法移出应用程序包。对所述捆绑包的任何修改都会使签名无效,并且会使您的应用程序在除了越狱的iOS设备之外的所有设备上都无法正常运行。

现在,对于复制图像的挑战:要在主要包中找到一些东西,你可以这样做:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"myImage"
                                                      ofType:@"png"];

对于图像,你最好这样做:

UIImage *imageFromBundle = [UIImage imageNamed:@"MyImage.png"];

这将以一种直接加载图像的方式为您进行缓存。

我不知道为什么你要复制图像,但似乎你可能有一组初始图像可能会或可能不会被替换。我建议,然后,不要复制出捆绑包,先在Documents文件夹中查找图像,如果不存在,请将其复制出捆绑包。这允许您替换图像而无需从包中复制或修改包。

答案 1 :(得分:0)

AFAIK捆绑包是只读的。因此,虽然你的“移动”想法很好,但我相当肯定Apple目前不允许这样做。

  

有没有自动化的方法   搜索应用程序包和   建立一个文件目录   图像路径?

我可以说我已经为图像做了这个,但你必须自己创造魔法。我写了一个类,我将调用图像的名称作为参数。该类首先查看文档目录,然后查看该包,最后查看该网站的图像。当它找到图像时,它返回了UIImage。最初设置有点痛苦,但一旦到位它就非常有用,我很高兴我做到了。