私のアプリでは、サーバーから 1 つの「記事」と 1 つの画像の 2 つのオブジェクトをダウンロードできるようにしようとしています。「article」オブジェクト (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
上記のように foreach を実際に使用するのではなく、for ループから来る) ブロックはまだ同じ for ループ内にあるためです。これは今のところ機能していますが、これまでに 3 つの記事でしかテストしていません。ここで私が完全に間違っていない場合、これは貧弱で欠陥のある方法です. image2 が image1 よりも速くダウンロードされるというシナリオに関しては、少し遅れて開始されたにもかかわらずです. index:2
そのような場合、空の配列にオブジェクトを挿入できないという例外に出くわすことになると思います。
配列にサイズ のダミー データを入力し、[articles count]
後で正しいインデックス ( i
) のダミー データをランダムな順序でダウンロードされた画像に置き換えることを考えていました。でも、そんなことを考えても汚く感じる。これを行うには適切な方法が必要ですか?何を検索すればよいか完全にはわかりません..