在我的应用程序中,我试图能够从我的服务器下载两个对象,一个“文章”和一个图像。'article'-object(从 sql-query 转换为 NSObject 的子类)有一个指向下载图像的位置的指针,这显然比 article-query 需要更长的下载时间。当我“下载”文章时,它们最终以NSArray
. 当它们完成后,我将遍历数组以开始异步下载每个图像,有点像这样:
for(Article *a in articles)
{
NSString *url = a.imageURL;
//Start async download of this image
}
我正在使用 Parse Framework 来执行此操作,因此该块对于没有使用它的人来说可能看起来很奇怪,所以我将改为解释:在该块中(当异步下载完成时),我正在分配将 NSData(图像)返回到另一个数组,NSMutableArray
命名为articleImages
,我希望该数组中图像的索引与另一个中文章的索引相对应;两个数组中的年表相同。
现在,我正在这样做:([articleImages insertObject:data atIndex:i];
其中i
来自 for 循环,而不是像上面那样真正使用 foreach),因为该块仍在同一个 for 循环内。这目前有效,但到目前为止我只测试了三篇文章。如果我在这里没有完全错,那么这是一种糟糕且有缺陷的方法,因为 image2 的下载速度比 image1 快,即使它是稍后启动的。在这些情况下,我想我会偶然发现一个异常,说我不能index:2
在空数组中插入对象。
我正在考虑用虚拟数据填充数组,大小为[articles count]
,然后i
用下载的图像替换正确索引( )虚拟数据,因为它们以随机顺序出现。但我一想到这个就觉得很脏。必须有适当的方法来做到这一点?我也不完全确定要搜索什么..