2012-02-29 74 views
0

我需要改进我的编码,所以我找到了更好的东西。更好地处理从iPhone中的服务器获取数据

我的问题是我需要从10个不同的url.that网址撷取来自服务器的数据有例如图像100

我需要打

http://192.168.11.222/images/a http://192.168.11.222/images/b http://192.168.11.222/images/c http://192.168.11.222/images/d http://192.168.11.222/images/e http://192.168.11.222/images/f http://192.168.11.222/images/g http://192.168.11.222/images/h http://192.168.11.222/images/i

这样一个文件夹就是服务器上包含图像的文件夹。

目前我通过NSURLConnectionWithTag执行此操作,然后解析response.and get saved.is还有其他更好的方法来处理这个问题吗?我还需要显示进度条,在这种情况下也很困难。

回答

1

我会设置一个NSOperationQueue,每个URL只需一次操作,并将其设置为三个并发操作。然后使用NSURLConnection的非异步API进行下载。

对于你的进度条,它可能足以在每个单独文件完成后更新进度,并且每次(或某物)执行其中的两个。无论如何,等待时间将超过“进度”的一半,因此除非您开始尝试预测ping时间,否则基于实际传输字节的进度条将不够准确(除非这些图像非常大)。

您将需要了解操作队列和GCD是如何工作的,但一旦您完成了排序,它实际上不会有太多的代码,而且它将坚如磐石。

基本上,您希望将代码的“块”添加到要下载的每个URL的操作队列中,并且队列会计算出如何下载每个代码,然后当每个代码块完成时,它会执行另一个阻止主线程(dispatch_sync(dispatch_get_main_queue(), ^{ ... }))更新进度条。

0

如果您要在您的应用程序中编写与网络相关的代码,我建议您查看AFNetworking,它是一个已经提供的网络API iOS包装,它的麻烦更少。

相关问题