私のサーバー上でユーザーのプロフィールを検索します。ユーザーがユーザー名を入力すると、別の推奨プロファイルがUITableView
のセルに表示されます。各プロファイルには、それに関連付けられたイメージがあります。 cellForItem(at:)
関数を使用して、ユーザーが入力すると、イメージは非同期に読み込まれます。ユーザーが検索するように入力すると、サーバーに対する検索要求が取り消されますが、非同期要求も取り消す必要があります。一度に複数のリクエストが発生する可能性があります - どのように私はそれらを追跡する必要がありますか?私がしたい場合は、私はrequest = model.downloadImage(...
を追加することができますが、request
だけdownloadImage()
関数が呼び出されたことを最後の時間へのポインタを開催する新しい検索でuitableviewcellsの非同期画像を読み込む方法をキャンセルするには
model.downloadImage(
withURL: urlString,
completion: { [weak self] error, image in
guard let strongSelf = self else { return }
if error == nil, let theImage = image {
// Store the image in to our cache
strongSelf.model.imageCache[urlString] = theImage
// Update the cell with our image
if let cell = strongSelf.tableView.cellForRow(at: indexPath) as? MyTableCell {
cell.profileImage.image = theImage
}
} else {
print("Error downloading image: \(error?.localizedDescription)")
}
}
)
注:画像をダウンロードする
私のコードは次のようです。