将图像下载到包中?

时间:2009-11-10 20:54:51

标签: iphone objective-c cocoa-touch uiwebview

我在UIWebView中显示文本和图像。内容并不总是一样的。我使用捆绑路径访问内容中的图像。对于内容版本的内容更新,我想让用户能够下载新内容(文本和图像)。这个新内容也将显示在UIWebView中。问题是我将不得不使用磁盘路径而不是使用捆绑路径的常见模式。除非有办法在运行时将图像重新打包到包中。

一旦应用程序的下一个应用程序商店更新可用,所有以前下载的图像都将在应用程序包中。在此更新中,我将写入覆盖以前的内容并使用图像的包路径。内容将完全相同,减去图像路径。

任何人都可以了解这可行的方法或更好的方法吗?

2 个答案:

答案 0 :(得分:5)

据我所知,一旦您的应用程序发布到App Store,您就无法重新打包iPhone上的软件包。换句话说,将捆绑包中的数据放在文件系统上,以便在运行时更改它。

我常用的技巧是:

  • 捆绑初始数据
  • 有一个例程,用于在启动时检查iPhone文件系统上是否存在版本化文件
  • 如果该例程找不到当前版本的文件,将所有数据复制到iPhone的文件系统中
  • 引用我应用中文件系统的数据,而不是使用捆绑路径

所以,基本上你的bundle只是一种传递机制,一种用你需要的东西预加载文件系统的方法。一旦它在文件系统上,你可以改变你想要的任何东西。

答案 1 :(得分:1)

同意本杰明 - 你不能改变你的包内容 相反,您可以(并且应该)将下载的内容保存到应用程序沙箱的“文档”文件夹中。你可以通过这种方式获得它的路径:

// Look in Documents for an existing plist file
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; 

此外,此文件夹的内容在更新期间仍然存在,因此可能没有必要将可下载的可选内容放入应用程序包中。