我正在构建一个需要下载网页内容以便在iPad上进行离线观看的应用程序。目前,我正在从网上加载一些Web内容用于测试目的,并使用UIWebView显示。实现这很简单。现在我需要进行一些修改以支持离线内容。最终,离线内容将下载到用户可选择的捆绑包中。
在我看来,我有很多选择,但我可能错过了一些:
考虑/问题:
答案 0 :(得分:1)
如果您可以控制内容,我建议混合使用第一个和第三个选项。 如果内容是由您创建的(如级别等),则只需将其存储在服务器上,下载zip并将其存储在本地。使用 CoreData 存储关于您已下载的内容的索引,例如存储在其中的文件夹的路径及其名称/来源/等,但不包括原始数据。数据库不被认为拥有大量原始内容,而是保存结构化数据。即使他们可以 - 我也不会这样做。
为了您的考虑:
如果您没有控制权,请使用与上述相同的内容,但按照选项4中的建议单独下载每个文件。解压后两种情况基本相同。
如果您有任何疑问,请回来。
答案 1 :(得分:0)
您可以为每个捆绑包创建一个xml文件,其中包含捆绑包中每个文件的路径,将其放在每个捆绑包的公共文件夹中。下载时,首先下载并解析xml,然后逐个下载每个资源。这将为您节省压缩和解压缩内容的开销。在本地为每个包创建一个文件夹,然后在那里重新创建包的文件夹结构。通过这种方式,内容可以在线和离线工作而无需更改。
只需稍加努力,您甚至可以通过在每个资源的xml文件中包含版本号来跟踪文件版本,因此如果您的内容已部分更新,则只需再次下载具有更改版本号的文件。 / p>