【问题标题】:Downloading multiple items in package下载包中的多个项目
【发布时间】:2009-11-28 05:30:50
【问题描述】:
我需要允许用户在一次下载中下载多个图像。此下载将包括一个 sql 文件和图像。下载完成后,将执行 sql,将文本插入到 sqlite 数据库中。此文本将包括对下载图像的引用。文本和图像在 UIWebView 中呈现。
在一次下载中下载所有内容的最佳方式是什么?我正在考虑使用捆绑包,因为它可以在运行时加载,但不确定这种情况下的任何限制/限制。我已经测试将捆绑包放入 Documents 文件夹,然后访问其中的资源。这在一个简单的测试中似乎可以正常工作。
【问题讨论】:
标签:
iphone
objective-c
cocoa-touch
xcode
【解决方案1】:
您正在通过仅知道字节的套接字下载所有内容,因此捆绑包甚至文件不会“自然”传输,服务器端打开文件并编码并将它们发送到连接中,客户端从套接字读取并重建原始文件结构。
假设应用程序有一个 UI 用于选择需要传输的项目,然后它可以向服务器请求所有项目,然后服务器可以通过单个连接发送所有项目,并带有您发明的一些分隔符,以便iPhone 应用程序可以将流拆分回单个文件。
或者另一种选择是客户端可以通过非常简单的NSURLConnection 对不同的文件执行单独的 HTTP 请求。
前者听起来像是在尝试优化后者。您是否已经测试并验证了后者太慢/效率低下?实施起来肯定更复杂。
按顺序运行的多个 HTTP 连接存在延迟问题,但是您可以通过并行运行多个下载连接来缓解它 - 例如通过 NSOperationQueue 限制为 2 到 5 个并发下载操作。