0

私はcoredataとFetchedResultsControllerの助けを借りてテーブルビューを構築しようとしました(coredataからの情報はサーバーからのAPIで取得されます)、テーブルの各セルにはGCDと非同期でネットから画像をロードする画像ビューがあります(私も試してみましたSDWebImage) メソッド
"tableView:tableView cellForRowAtIndexPath:indexPath" で、より多くのレコードを別のリクエストを行うと問題が発生します (たとえば、初めて 50 レコードがあり、新しいリクエストを行ってコア データに保存すると、画像は次のようになります)。記事に正しく関連付けられていないか、スクロールすると消える) fetchedResultsController からの結果が時間の関数でソートされているためだと思います。私のコード:

NewsFeed *singleFeed = [self.fetchedResultsController objectAtIndexPath:indexPath];
NLNewsFeedCell *cell = (NLNewsFeedCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"NewsFeedCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
    cell.lblTextContain.numberOfLines = 0;
}
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
    dispatch_async(queue, ^(void) {
        NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:singleFeed.urlPicture]];

        UIImage* image = [[UIImage alloc] initWithData:imageData];
        if (image) {
            dispatch_async(dispatch_get_main_queue(), ^{
                cell.imgPicture.image = image;
                [cell setNeedsLayout];
            });
        }
    });                               

}

この問題をどのように解決できますか? ありがとうございます。

4

2 に答える 2