私は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];
});
}
});
}
この問題をどのように解決できますか? ありがとうございます。