【问题标题】:Downloading image into bundle?将图像下载到捆绑包中?
【发布时间】:2010-12-15 05:31:34
【问题描述】:

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

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

谁能提供一些关于这可能如何工作或更好的方法的见解?

【问题讨论】:

    标签: iphone objective-c cocoa-touch uiwebview


    【解决方案1】:

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

    我对这些东西的常用技巧是:

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

    所以,本质上你的包只是一个交付机制,一种用你需要的东西预加载文件系统的方法。一旦它在文件系统上,您可以更改任何您想要的内容。

    【讨论】:

      【解决方案2】:

      同意 Benjamin - 您不能更改捆绑内容。
      相反,您可以(并且应该)将下载的内容保存到应用程序沙箱的 Documents 文件夹中。你可以通过这种方式获得它的路径:

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

      此外,此文件夹的内容会在更新期间保留,因此可能不需要将可下载的可选内容放入应用程序包。

      【讨论】:

      • 谢谢。问题是我已经在应用程序包中有很多内容引用图像。展望未来,只有少数更新会引用磁盘上的图像。我无法部署 1.2 版中的所有图像以节省空间 b/c 获得 1.3 版的人将需要下载所有这些图像。
      • 我对最后一句话有点困惑。 1.3 中的图像不会替换 1.2 中的图像吗?或者您是在谈论节省应用下载空间本身?
      • 是的 - 这是关于下载的。对于新用户,图像总是需要在应用程序包中。否则,它们的内容将是零散的。
      猜你喜欢
      • 2011-08-05
      • 2014-11-27
      • 2014-01-19
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多